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