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)

总结

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

相关文章

  • Python3创建Django项目的几种方法(3种)

    Python3创建Django项目的几种方法(3种)

    这篇文章主要介绍了Python3创建Django项目的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python使用自定义user-agent抓取网页的方法

    python使用自定义user-agent抓取网页的方法

    这篇文章主要介绍了python使用自定义user-agent抓取网页的方法,涉及Python使用urllib2模块操作网页的技巧,需要的朋友可以参考下
    2015-04-04
  • OpenCV实现人脸识别

    OpenCV实现人脸识别

    本文主要介绍了python使用opencv实现人脸识别的相关资料。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • python颜色随机生成器的实例代码

    python颜色随机生成器的实例代码

    这篇文章主要介绍了python颜色随机生成器的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 教你如何使用Python开发一个钉钉群应答机器人

    教你如何使用Python开发一个钉钉群应答机器人

    在聊天工具大肆侵入我们生活各个方面的今天,各种消息无时无刻不在侵扰我们的每一寸时间,这种情况下,一个聊天的机器人就很有必要了.今天,我们来学习一下使用 Python 开发一个钉钉的应答机器人,助你「人生苦短,少回消息」,需要的朋友可以参考下
    2021-06-06
  • keras 解决加载lstm+crf模型出错的问题

    keras 解决加载lstm+crf模型出错的问题

    这篇文章主要介绍了keras 解决加载lstm+crf模型出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 如何快速理解python的垃圾回收机制

    如何快速理解python的垃圾回收机制

    在本篇内容里小编给各位分享的是一篇关于如何快速理解python的垃圾回收机制的相关知识点内容,需要的朋友们可以学习下。
    2020-09-09
  • Caffe卷积神经网络solver及其配置详解

    Caffe卷积神经网络solver及其配置详解

    这篇文章主要为大家介绍了Caffe卷积神经网络solver及其配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python Pandas实现数据分组求平均值并填充nan的示例

    Python Pandas实现数据分组求平均值并填充nan的示例

    今天小编就为大家分享一篇Python Pandas实现数据分组求平均值并填充nan的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • matplotlib绘制动画代码示例

    matplotlib绘制动画代码示例

    这篇文章主要介绍了matplotlib绘制动画代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论