python爬蟲遇到403錯誤的問題及解決
python爬蟲遇到403錯誤
這段時間我很想去p站爬一爬,之前有試過,但都失敗了,有一次用phantomJS嘗試,結(jié)果卡死在登錄頁面,太復(fù)雜了。
有一次卡死在編碼上,一直無法獲取到頁面。
這次是卡死在403上,我獲取了圖片的鏈接,正要下載時彈出403錯誤,圖片在瀏覽器上也打不開,我還以為是網(wǎng)站把我的ip封掉了,就放棄了,后來聽一位大神說,有的時候需要向網(wǎng)頁發(fā)送一些請求頭吃才能下載東西(我是第一次聽說urllib.request.urltrieve也能添加請求頭)真是長見識了。
經(jīng)過自己的摸索,發(fā)現(xiàn)在p站下載高清大圖需要給服務(wù)器發(fā)送一個”Referer”參數(shù),用來告訴服務(wù)器你是從哪個網(wǎng)址進入圖片鏈接的。
而且p站的圖片頁沒有單獨的json文件加載,它的json數(shù)據(jù)全存在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爬蟲代碼錯誤的解決
在做數(shù)據(jù)抓取的時候經(jīng)常會遇到各種各樣的問題,這些問題就是新手小白經(jīng)常會遇到的代碼問題。

1、爬取https的網(wǎng)站或是接口的時候,如果是不受信用的SSL證書,會報錯,需要添加如下代碼
如下代碼可以保證當前代碼塊內(nèi)所有的請求都自動屏蔽ssl證書問題:
import ssl # 這個是爬取https的鏈接需要的,以及下面一行代碼 ssl._create_default_https_context = ssl._create_unverified_context
2、爬取jsonp的接口,返回的數(shù)據(jù)需要刪除callback名字和最外層括號,可以通過以下方式過濾:
text方法將取得的數(shù)據(jù)轉(zhuǎn)為文本,然后re.match將字符串過濾掉callback名字和最外層括號,留下原本json部分的數(shù)據(jù),然后通過json.loads將過濾出來的json轉(zhuǎn)為python對象
import re
getOneSongInfoCallback=json.loads(re.match(".*?({.*}).*", requests.get(url, headers=headers).text)[1])
3、獲取請求的地址后面跟的參數(shù)的方法,如下方式得到qs就可以進一步直接獲取自己想要的參數(shù)值:
import urllib.parse as parse parse_query=parse.urlparse(url).query qs=parse.parse_qs(parse_query)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3創(chuàng)建Django項目的幾種方法(3種)
這篇文章主要介紹了Python3創(chuàng)建Django項目的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
python使用自定義user-agent抓取網(wǎng)頁的方法
這篇文章主要介紹了python使用自定義user-agent抓取網(wǎng)頁的方法,涉及Python使用urllib2模塊操作網(wǎng)頁的技巧,需要的朋友可以參考下2015-04-04
教你如何使用Python開發(fā)一個釘釘群應(yīng)答機器人
在聊天工具大肆侵入我們生活各個方面的今天,各種消息無時無刻不在侵擾我們的每一寸時間,這種情況下,一個聊天的機器人就很有必要了.今天,我們來學(xué)習(xí)一下使用 Python 開發(fā)一個釘釘?shù)膽?yīng)答機器人,助你「人生苦短,少回消息」,需要的朋友可以參考下2021-06-06
Caffe卷積神經(jīng)網(wǎng)絡(luò)solver及其配置詳解
這篇文章主要為大家介紹了Caffe卷積神經(jīng)網(wǎng)絡(luò)solver及其配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例
今天小編就為大家分享一篇Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

