2017-07-17 96 views
0

目的抓取多個頁面與Scrapy

爲了與Scrapy和Python兩個深層次的網絡爬蟲。

問題

該網站是在1頁,則存在履帶是繼鏈路,並提取正確的數據大約10個項目的結構。問題是這個結構對於10個頁面是遞歸的,但是這些最後頁面的鏈接是變化的並且註釋指向home1,但是指向home2。對於第2頁到第10頁,我們希望爬蟲執行相同的例程,因爲抓取工具所遵守的模式對於這些頁面是遞歸重複的。

網站結構

->website.com 
-->   /home1 
--->    /page/2 
-->   /home2/doc/item 

我可以從下一個履帶式第一級接取數據。

第一級履帶

from scrapy.contrib.spiders import CrawlSpider, Rule 
from mySpider.items import Item 
from scrapy.linkextractors import LinkExtractor 

class MySpider(CrawlSpider): 
    name="spider" 
    allowed_domains = ["website.com"] 
    start_urls = ["https://website.com/home1/"] 

    rules = [Rule(LinkExtractor(allow=('(/home2/doc/item((?!:).)*$'),), callback="parse_item", follow=True)] 

    def parse_item(self, response): 
      item = Item() 
      name = response.xpath('//h3/text()')[0].extract() 
      item['name'] = name 
      return item 
+0

歡迎光臨本站:您可能想閱讀[幫助/話題],[問]和[mcve]。 – boardrider

回答

0

我不知道我完全明白不過,如果你想從第一頁開始抓取多個URL的,你可以列出他們start_urls數組中你的問題。這樣可以讓您獨立抓取每個頁面。

start_urls = [ 
    "https://website.com/home1/", 
    "https://website.com/home2/", 
    "https://website.com/home3/" 
] 

但是,如果你想抓取和home1和跟蹤記錄URL的順序,這樣就可以在以下HOME2,home3,等你可以創建一個全局列表抓取,並保存網址列表。另一個選擇是創建一個URL列表並將它們傳遞給下面的請求,使用帶有scrapy.Request的meta屬性。

請說清楚,很難理解用例。