超級小白的scrapy爬蟲經歷 初章

2021-07-04 02:43:46 字數 2816 閱讀 9856

(1)然後就是第乙個坎了,scrapy startproject ***,呵呵,報錯了》_

沒有setting.py.tmpl,那麼這個檔案本來應該放哪呢??答案是

\lib\site-packages\scrapy\templates\project\module(用google搜setting.py.tmpl)

開啟看了一下,果然裡面沒有,用python新建乙個檔案,命名為setting.py.tmpl放到那個資料夾下就可以了,pipelines.py.tmpl和items.py.tmpl也一樣,這三個檔案的內容google可以搜到。都搞定之後,就可以start your first spider。

(2)我的spider要實現的內容非常簡單,就是提取網頁內容和自動多頁爬取,完全沒有對settings和pipelines的修改。要爬的**是第一步就是在items.py裡定義item了,這是**:

接下來就是用xpath從網頁上提出這三個毛毛,但是xpath怎麼用,因為我是超級小白啊!!?

看教程:

最起碼把xpath語法和xpath例項看了,但是還不夠。

還得會用scrapy shell +url測試xpath路徑是否可用

(我看教程裡沒有提scrapy shell,悽慘的經歷就不說了…),

用scrapy shell 測試

response.xpath('//table/tr[@class]')
(路徑需要用到瀏覽器的審查元素功能,貌似不同瀏覽器開啟方法不一樣,chrome按f12就可以了),輸出結果是這個樣子的:

可以看到這是乙個由路徑組成的列表,然後對這個列表迴圈就能提取出每條**的那三個資訊,要注意的地方就是迴圈時用相對路徑『td[3]/text()』就可以了,就是:

sites=response.xpath('//table/tr[@class]')

item=myproxyitem()

for site in sites:

item['ipadress']=site.xpath('td[3]/text()').extract()[0]

item['port']=site.xpath('td[4]/text()').extract()[0]

item['type']=site.xpath('td[7]/text()').extract()[0]

你也可以試一下『//td[3]/text()』和『/td[3]/text()』,然後後者是錯的,要是不知道原因可以再看一下xpath語法。到此為止,spider的第一部分就完成了,這時候它可以爬取單頁上的內容了。

urls=response.xpath('//div[@class="pagination"]/a/@href').extract()#提取鏈結部分

urls=[""+url0 for url0 in urls]#補全鏈結

為了防止重複爬取,把爬過的頁面記錄下來就可以了(這裡得吐槽一下,明明寫的有131頁,爬了之後發現只有10頁的鏈結是可用的,我還以為是程式的問題,在**試了一下就是翻不到第11頁…),接下來就是多頁爬取最最關鍵的地方了,

for url in

urls:

if url not

inurllist:

print url#測試用

yield

request(url,callback=self.parse)#跟進

到此,用scrapy實現的最簡單的多頁爬取就完成了。這是部分執行結果:

Scrapy爬蟲的嘗試

今天嘗試了一下使用scrapy框架來寫python的爬蟲。是根據scrapy的官方文件中的簡單的樣例修改的。嘗試了一下分析網頁,找出 中的所有的。首先定義了乙個item類 class imgitem scrapy.item src scrapy.field 之後是spider的類 import sc...

Scrapy的架構(爬蟲框架)

這就是整個scrapy的架構圖了 這裡寫描述 scrapy機構流程過程 scrapy engine spider middlewares spiders scheduler middlewares spiders item pipeline scrapy engine 引擎 這是引擎,負責spide...

scrapy爬蟲的相關技術

1.xpath選擇器從當前節點往下搜尋 nodename 選取此節點的所有子節點。從根節點擊取。從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。選取當前節點。選取當前節點的父節點。選取屬性。以上是w3school上的xpath語法介紹,下面有個問題,div list response.xp...