这是我第一次在S.O上发布问题。我最近接触了scrapy和python,并有一个预先编写的搜寻器,可以对产品的亚马逊进行搜寻。
我可以在此处定义的一些代码:
1)爬虫类
class AmazonSpider(CrawlSpider):
name = 'amazon'
allowed_domains = ['www.amazon.com']
rules = (
Rule(
LinkExtractor(allow=('/s/ref=sr_pg_'), tags=('a'),attrs=
('href'),restrict_css=('.pagnNext',)),
callback="parse_items",
follow=True,
process_request='process_request'
),
)
2)感兴趣的数据成员
def __init__(self, product='samsung', domain=None, *args, **kwargs):
super(AmazonSpider, self).__init__(*args, **kwargs)
self.start_urls = [a,b,c,d]
#Some more lines below
包含4个网址的列表,每个网址都是在亚马逊上搜索的结果(例如,一个可以通过搜索三星手机获得,另一个可以是LG TV等)。
3)一种感兴趣的方法
def parse_start_url(self, response):
request = Request("https://www.amazon.com/s/?field-keywords=",
callback=self.parse_items)
return request
4) 每个规则中的回调方法,“ parse_items”对提取的链接起作用以获取感兴趣的数据
我了解的是,“ start_urls”列表中的每个url都是由parse_start_url()方法解析的:
我不明白: 1)“规则”的工作方式 2)内部的“ linkextractor”如何工作
我需要的是所有4个url必须从所有页面中提取所有存在的链接,然后所有这些链接都可以用于获取产品详细信息。 那可以吗?我还可以知道一个示例,其中可以定义start_urls的优先级吗?
**在start_urls列表中使用了4个特定的搜索结果URL,因为使用通用搜索结果仅给出20页。
如果有人可以解决我的问题,请帮忙。非常感谢,如果您有兴趣阅读此书并需要更多信息来解决我的问题,请务必提出来。
谢谢!!