源碼在https://github.com/Lotus-Blue/Python-crawls-douban-data-through-proxy-ipgit
爬蟲最怕是被封ip
,我相信不少爬蟲新手都會傻傻地拿本身的ip
用戶爬取數據(順序1的文件),前幾回可能成功,但過了這個時間後,你會發現請求拋出403
狀態碼,這是由於你的請求頻率過高了,系統會認爲你在爬蟲,暫時把你的ip
封了。github
那如何解決這個問題呢?主要有下面三種辦法chrome
通常辦法1做用不大,辦法2的話又致使耗時太大,因此辦法3是又省時又奏效的好辦法json
ip
夠你用的了,可是也不能任性,仍是儘可能不要同時運行多個爬蟲程序
運行文件2以後,你會獲得一個下面這樣的文件 bash
ip
是否可用,經本人測試,通常都是狀態碼200
,因此這步你忽略也不要緊ip
(但沒有檢驗經過該代理,請求是否成功)def change_proxy(proxies):
proxy=random.choice(proxies)
if proxy==None:
proxy_support=urllib.request.ProxyHandler({})
else:
proxy_support = urllib.request.ProxyHandler({"http": proxy})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders=[("User-Agent",headers["User-Agent"])]
urllib.request.install_opener(opener)
print('智能切換代理:%s' % ('本機' if proxy == None else proxy))
複製代碼
respones = requests.get(url, headers=headers, proxies=random.choice(proxys))
while respones.status_code!=200:
respones = requests.get(url, headers=headers, proxies=random.choice(proxys))
複製代碼
打開chrome的「檢查」工具->切換到network界面->選擇XHR
,準備看網站的真實請求地址 dom
sort
:按熱度排序爲T、按時間排序爲R、按評分排序爲S tags
:類型 countries
:地區 geners
:形式(電影、電視劇…) start
:「加載更多」 測試
json
數據是很好的
==總之先看下真實請求接口有沒有好東西,沒有的話再爬取網站源碼數據==網站