【发布时间】:2022-03-10 16:04:29
【问题描述】:
您好,我有以下代码来扫描给定站点中的所有链接。
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
如果我只想检查全球网站的一部分,我该怎么做?例如,我尝试仅扫描一个国际站点的法语部分,其域的结构为:domain.com/fr/fr。所以我尝试过:
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/fr/fr"]
start_urls = ["http://domain.com/fr/fr"]
rules = (
Rule(LinkExtractor(), callback='parse_page', follow=True),
)
def parse_page(self, response):
item = SampleItem()
item['link'] = response.url
return item
但是蜘蛛只返回 3 个结果而不是数千个。我究竟做错了什么?
【问题讨论】:
标签: python hyperlink scrapy web-crawler