目標(biāo):抓取主頁name、price、url。詳情頁introduce、address、phone_number
我們依舊采用Scrapy框架,并用Pyquery解析
廢話不多說,先上結(jié)果、步驟與代碼:
步驟:
因篇幅過大,步驟可參考上篇
代碼如下:
items.py:定義我們所要爬取的信息的相關(guān)屬性,此例中需要爬取的是name、price、url、introduce、address、phone_number
City_58_test.py:主要是用于定義請求鏈接,并使用pyquery選取目標(biāo)元素
pipeline.py:當(dāng)item數(shù)據(jù)被city58_test爬蟲爬取好并返回給引擎以后,引擎會把item交給City58Pipeline這個管道處理。這個pipeline文件負責(zé)打開關(guān)閉文件,并寫入文件
middleware.py:隨機選取User-Agent,并把它賦值給傳入進來的request
settings.py:開啟City58Pipeline管道,middliwares下載中間件與robots協(xié)議
main.py:運行爬蟲
各文件詳情:
參考上篇文章
現(xiàn)主要講解middleware.py中間件:
Scrapy框架中的中間件主要分兩類:蜘蛛中間件和下載中間件。其中最重要的是下載中間件,反爬策略都是部署在下載中間件中的
我們在這加入各大搜索引擎的UA,使我們的爬蟲更接近于人的操作
爬蟲神器——各大搜索引擎的User-Agent:
Chrome瀏覽器:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36’,
百度爬蟲:‘Mozilla/5.0 (compatible; Baiduspider/2.0; - +http://www.baidu.com/search/spider.html)’,
IE9瀏覽器:‘Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)’,
谷歌爬蟲:‘Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)’,
必應(yīng)爬蟲:‘Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)’,
總結(jié):
當(dāng)你用過幾次scrapy框架,發(fā)現(xiàn)很多文件都是套路化的,例如:58爬蟲中,除City_58_test.py需大幅度修改,其他文件都可套用與其他爬蟲
58的網(wǎng)頁結(jié)構(gòu)不適合用xpath,所以我們用pyquery,更方便簡潔
有不清楚的地方,大家可以留言,點贊,我看到了,會第一時間回復(fù)你