Scrapy
是一個完美的選擇。使用CrawlSpider
和LinkExtractor
。
下面的蜘蛛會follow
並收集網站上的所有鏈接。由於默認情況下啓用了OffsiteMiddleware
,因此您無法從其他域獲取鏈接。
from scrapy.item import Field, Item
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
class SampleItem(Item):
link = Field()
class SampleSpider(CrawlSpider):
name = "sample_spider"
allowed_domains = ["domain.com"]
start_urls = ["http://domain.com"]
rules = (
Rule(LinkExtractor(), callback='parse_page', follow=True),
)
def parse_page(self, response):
item = SampleItem()
item['link'] = response.url
return item
如果要限制鏈接的數量和獲得N條鏈路後停止蜘蛛,使用Close Spider
擴展和設置CLOSESPIDER_ITEMCOUNT
設置:
CLOSESPIDER_ITEMCOUNT
的整數,指定號碼項目。如果物品和物品通過物品 管道後,蜘蛛的 比該金額多,則蜘蛛將被關閉,其原因爲 closespider_itemcount。如果爲零(或未設置),蜘蛛將不會按傳遞項目的數量關閉 。
在你的情況下,你也可以使用CLOSESPIDER_PAGECOUNT
設置。
希望有所幫助。
非常感謝提示! 2其他問題: 如果我需要列出只包含特定字符串的頁面,可能嗎?所以我只能列出產品頁面而不是主頁面。 一次可以在多個網站上執行它嗎? –
@markoc。是的,這是可能的。考慮問一個單獨的問題,以便更多的人有機會幫助你。在這裏也給我一個鏈接。如果以下主題得到解決,請不要忘記接受答案。謝謝。 – alecxe
非常感謝您的幫助。我會發布新的問題。此刻我嘗試了您發佈的scrapy蜘蛛,但我收到一條錯誤消息「無法導出LinkExtractor」。任何想法??我是一個真正的初學者與scrapy,但它似乎資源豐富!再次感謝 - 這裏是我的新問題的鏈接:https://stackoverflow.com/questions/24788376/scrapy-error-cannot-import-name-link-extractor –