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)址進(jìn)入圖片鏈接的。
而且p站的圖片頁沒有單獨(dú)的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證書,會報(bào)錯,需要添加如下代碼
如下代碼可以保證當(dāng)前代碼塊內(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就可以進(jìn)一步直接獲取自己想要的參數(shù)值:
import urllib.parse as parse parse_query=parse.urlparse(url).query qs=parse.parse_qs(parse_query)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)的一個火車票轉(zhuǎn)讓信息采集器
這篇文章主要介紹了python實(shí)現(xiàn)的一個火車票轉(zhuǎn)讓信息采集器,采集信息來源是58同程或者趕集網(wǎng),需要的朋友可以參考下2014-07-07
Python利用D3Blocks繪制可動態(tài)交互的圖表
今天小編給大家來介紹一款十分好用的可視化模塊,D3Blocks,不僅可以用來繪制可動態(tài)交互的圖表,并且導(dǎo)出的圖表可以是HTML格式,方便在瀏覽器上面呈現(xiàn),感興趣的可以了解一下2023-02-02
python matplotlib折線圖樣式實(shí)現(xiàn)過程
這篇文章主要介紹了python matplotlib折線圖樣式實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
pandas 相關(guān)性和正態(tài)性分析的實(shí)踐
當(dāng)我們談?wù)撜龖B(tài)性(Normality)和相關(guān)性(Correlation)時,我們實(shí)際上在嘗試?yán)斫鈹?shù)據(jù)的分布模式和不同變量之間的關(guān)系,本文就來介紹一下pandas 相關(guān)性和正態(tài)性的實(shí)踐,感興趣的可以了解一下2024-07-07
在python中實(shí)現(xiàn)強(qiáng)制關(guān)閉線程的示例
今天小編就為大家分享一篇在python中實(shí)現(xiàn)強(qiáng)制關(guān)閉線程的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Datawhale練習(xí)之二手車價(jià)格預(yù)測
此篇文章是關(guān)于Datawhale練習(xí),代碼完整,但由于該數(shù)據(jù)集中數(shù)據(jù)特征較少(39維),以下可作為少量特征情況下的分析。當(dāng)特征數(shù)目過大(成千上萬)時,需要繼續(xù)學(xué)習(xí)。需要的朋友可以參考下2021-04-04
Python實(shí)現(xiàn)的將文件每一列寫入列表功能示例【測試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)的將文件每一列寫入列表功能,涉及Python文件讀取、遍歷、序列追加、賦值等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03

