1. 為什麼用requests爬取不了內容
爬不到內容有幾種可能,你可以對照著檢查看看:
首先先確定你直接請求這個鏈接是可以返回正確數據,不需要添加其他請求參數,cookie,header這些。
看看這個請求響應碼是否正常的的200。
如果請求響應正常(響應碼200)並且返回了數據,你先看看這個數據是否有什麼提示信息說你的請求不符合要求之類的。
你要確定你請求的數據是直接在靜態HTML頁面上,還是通過動態ajax請求二次請求在填充到頁面上的,如果是通過ajax請求的,你直接獲取頁面數據肯定是沒有的,這時你應該找到這個ajax請求,模擬發送這個請求獲取數據。
現在很多網站都有反爬蟲功能,要看看是否網站反爬蟲的原因。簡單測試就是換個IP或是搞個代理IP在發送一次請求試試。
2. python爬蟲返回錯誤
你的腳本里寫的有點問題,正常情況下不應該直接使用except來捕獲所有錯誤,因為這樣你根本看不到錯誤的原因,根據你圖片里那爬取異常四個字,誰知道錯誤原因呢?正常的代碼應該是這樣寫:
except Exception as e:
print("錯誤原因是:", e)
這樣才能把系統給發送的異常信息顯示出來,根據異常信息才能判斷是哪一步執行出錯了。
根據你圖片中的代碼信息,很有可能是你在鏈接中給出的參數出錯了,就是那個keyword值。你可以把異常結果發出來就能看的比較明顯了。
不知道我講清楚了沒有,希望可以幫助到你。
3. python爬蟲為什麼打開一些網頁會幾率失敗
那是你的爬蟲程序被反爬了,現在的網頁反爬機制五花八門,有UA,有cookie,有時間戳等等,找到網頁加密規律,調整代碼再試試吧!
4. python爬取頁面數據錯誤,連續爬很多頁數。我主要改變的是post裡面的參數pageno
給你貼一下我前一段時間回答的類似問題,用的soup,還有一個用的正則就不貼了,手機不太方便,如下。
import beautifulsoup
import urllib2
def main():
userMainUrl = "你要抓取的地址"
req = urllib2.Request(userMainUrl)
resp = urllib2.urlopen(req)
respHtml = resp.read()
foundLabel = respHtml.findAll("label")
finalL =foundLabel.string
print "biaoti=",finalL
if __name__=="__main__":
main();
PS:如果不會改的話追問一下,回頭我用電腦給你寫一份
5. python爬蟲失敗
解碼的時候記得加入
z_data=data.decode('UTF-8','ignore')
ignore是忽略錯誤解碼而不會報錯
因為什麼啊
現在寫前端的兄弟姐妹啊
怎麼方便用什麼碼寫
造成一個前端或者後端存在幾種編碼機制
當你utf-8遇到不是這個碼的時候就會報錯啦
6. python 爬蟲,爬不到數據
那數據是動態的,是通過js動態添加上去的,所以獲取不到。不僅是通過js動態添加的。而且從伺服器獲取的數據是加密過的,然後再解密,最後張渲染到頁面上。
7. java 爬取網頁時爬取不全是什麼原因
這種是用js實現的。所以後面的內容實際上是動態生成的,網路爬蟲抓取的是靜態頁面。 至於解決辦法,網上有幾種: 一種是使用自動化測試工具去做,比如selenium,可以模擬點擊等操作,但是這個其實和爬蟲還是有很大區別的。
8. python爬蟲無法爬取網頁完整內容
9. python爬蟲爬取不出信息
Python爬蟲程序本身沒有問題,但是卻爬取不了數據主要原因如下:
1.對方有反爬程序
幾乎所網站為了防止一些惡意抓取,會設置反爬程序,你會發現明明很多數據顯示在瀏覽器上,但是卻抓取不出來。
2.偽裝方式沒有繞過目標網站反爬
網站都有反爬蟲機制,防止爬取數據,爬蟲想要爬取數據,就需要隱藏自身的身份,偽裝成用戶的身份進行訪問,如果沒有偽裝好,被檢測到爬蟲,也是被會限制的。比如請求頭沒有設置好,Cookie問題等等。
3.IP被限制
爬蟲除了IP所有數據都可以偽裝,當你的IP訪問次數過多之後,就會被限制住,再也無法訪問了。這個時候就需要帶入ip代理池了。
10. python3 爬取圖片異常的原因
我們在下載文件時,一會會採取urlretrieve或是requests的get方式,
from urllib.request import urlretrieve
urlretrieve(self.url, filename="xxx.png")
但對於連續下載,各個文件保存是需要時間的,而程序運行永運是快於存儲的,我懷疑這是水管里流水速度與缸的大小不合適的原因,那可以試試下面這種方式:
r = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()