python爬虫遇到403错误的问题及解决

 更新时间:2024年02月08日 09:47:21   作者:carry_1024  
这篇文章主要介绍了python爬虫遇到403错误的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python爬虫遇到403错误

这段时间我很想去p站爬一爬,之前有试过,但都失败了,有一次用phantomJS尝试,结果卡死在登录页面,太复杂了。

有一次卡死在编码上,一直无法获取到页面。

这次是卡死在403上,我获取了图片的链接,正要下载时弹出403错误,图片在浏览器上也打不开,我还以为是网站把我的ip封掉了,就放弃了,后来听一位大神说,有的时候需要向网页发送一些请求头吃才能下载东西(我是第一次听说urllib.request.urltrieve也能添加请求头)真是长见识了。

经过自己的摸索,发现在p站下载高清大图需要给服务器发送一个”Referer”参数,用来告诉服务器你是从哪个网址进入图片链接的。

而且p站的图片页没有单独的json文件加载,它的json数据全存在html文件里,真是见了鬼(我还以为那段代码是乱码)。

p站还是牛逼啊,我大概花了两天时间才搞懂这些。

代码:

import urllib.request
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
url = "https://i.pximg.net/img-original/img/2016/12/25/05/10/36/60541651_p0.jpg"

opener = urllib.request.build_opener()
opener.addheaders=[('Referer', "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=60541651")]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(url,"E://miku.jpg")

python爬虫代码错误的解决

在做数据抓取的时候经常会遇到各种各样的问题,这些问题就是新手小白经常会遇到的代码问题。

1、爬取https的网站或是接口的时候,如果是不受信用的SSL证书,会报错,需要添加如下代码

如下代码可以保证当前代码块内所有的请求都自动屏蔽ssl证书问题:

import ssl   # 这个是爬取https的链接需要的,以及下面一行代码
ssl._create_default_https_context = ssl._create_unverified_context

2、爬取jsonp的接口,返回的数据需要删除callback名字和最外层括号,可以通过以下方式过滤:

text方法将取得的数据转为文本,然后re.match将字符串过滤掉callback名字和最外层括号,留下原本json部分的数据,然后通过json.loads将过滤出来的json转为python对象

import re
getOneSongInfoCallback=json.loads(re.match(".*?({.*}).*", requests.get(url, headers=headers).text)[1])

3、获取请求的地址后面跟的参数的方法,如下方式得到qs就可以进一步直接获取自己想要的参数值:

import urllib.parse as parse
parse_query=parse.urlparse(url).query
qs=parse.parse_qs(parse_query)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python百行代码自制电脑端网速悬浮窗的实现

    python百行代码自制电脑端网速悬浮窗的实现

    这篇文章主要介绍了python百行代码自制电脑端网速悬浮窗的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 一篇文章从零开始创建conda环境、常用命令的使用及pycharm配置项目环境

    一篇文章从零开始创建conda环境、常用命令的使用及pycharm配置项目环境

    在Conda中创建新环境是一个非常有用的做法,尤其是当你需要为不同的项目安装不同版本的软件包时,这篇文章主要给大家介绍了关于从零开始创建conda环境、常用命令的使用及pycharm配置项目环境的相关资料,需要的朋友可以参考下
    2024-07-07
  • 使用Python实现音频降噪功能

    使用Python实现音频降噪功能

    在音频处理领域,背景噪声是一个常见的问题,为了提高音频的质量,我们需要对音频进行降噪处理,本文将介绍如何使用 Python 实现音频降噪,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-11-11
  • matlab和Excel的数据交互操作(非xlsread和xlswrite)

    matlab和Excel的数据交互操作(非xlsread和xlswrite)

    在使用MATLAB时,可能会遇到很多表格数据的处理,有时MATLAB也需要利用现存的表格数据实现操作目的,下面这篇文章主要给大家介绍了关于matlab和Excel的交互操作的相关资料,非xlsread和xlswrite,需要的朋友可以参考下
    2021-08-08
  • Python 高级库15 个让新手爱不释手(推荐)

    Python 高级库15 个让新手爱不释手(推荐)

    对于初学者来说,这是一种简单易学的编程语言;另一个原因:大量开箱即用的第三方库,正是 23 万个由用户提供的软件包使得 Python 真正强大和流行,本文给大家分享15 个让新手爱不释手Python 高级库的相关知识,感兴趣的朋友一起看看吧
    2021-05-05
  • Python 基础之字符串string详解及实例

    Python 基础之字符串string详解及实例

    这篇文章主要介绍了Python 字符串(string) 的相关资料,需要的朋友可以参考下
    2017-04-04
  • tensorflow 环境变量设置方式

    tensorflow 环境变量设置方式

    今天小编就为大家分享一篇tensorflow 环境变量设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python pathlib模块实例详解

    Python pathlib模块实例详解

    本文给大家介绍了Python的pathlib 模块,为 Python 工程师对该模块的使用提供了支撑,让大家了解如何使用 pathlib 模块读写文件、操纵文件路径和基础文件系统,统计目录下的文件类型以及查找匹配目录下某一类型文件等,需要的朋友参考下吧
    2023-05-05
  • 用Python逐行分析文件方法

    用Python逐行分析文件方法

    在本篇文章里我们给大家分享了关于用Python逐行分析文件方法知识点,有需要的朋友们跟着学习下。
    2019-01-01
  • 解决TensorFlow训练模型及保存数量限制的问题

    解决TensorFlow训练模型及保存数量限制的问题

    这篇文章主要介绍了解决TensorFlow训练模型及保存数量限制的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论