Python scrapy 常見問題及解決 【遇到的坑】


1. 爬蟲出現Forbidden by robots.txt

解決方法:setting.py ROBOTSTXT_OBEY = True 改成False

原因:scrapy抓包時的輸出就能發現,在請求我們設定的url之前,它會先向服務器根目錄請求一個txt文件

這個文件中規定了本站點允許的爬蟲機器爬取的范圍(比如你不想讓百度爬取你的頁面,就可以通過robot來限制),因為默認scrapy遵守robot協議,所以會先請求這個文件查看自己的權限,而我們現在訪問這個url得到

 1 User-agent: * 2 Disallow: / 

在setting改變ROBOTSTXT_OBEY為False,讓scrapy不要遵守robot協議,之后就能正常爬取

對於使用robot協議的站點,只需要我們的爬蟲不遵守該協議,就可以了,但是對於防止爬蟲爬取,站點還有檢查請求頭、檢查ip等等手段,還需要其他的相應處理。

2. 如何進一步獲取數據並同時保存

解決方法:參考文章——scrapy爬取新浪網導航頁所有大類、小類、小類里的子鏈接,以及子鏈接頁面的新聞內容

3. ajax請求

解決方法:post請求

可以使用 yield scrapy.FormRequest(url, formdata, callback)方法發送POST請求

注意!!!

formdata的 參數值 必須是unicode , str 或者 bytes object,不能是整數。

4. 自動創建create_time

解決方法:將create_time字段設置為timestamp 並設置默認值CURRENT_TIMESTAMP

5. mysql 讓清空表且自增的id重新從1開始

解決方法:truncate table table_name


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM