CrawlSpider,使用规则和解析起始网址

时间:2018-12-05 10:19:12

标签: python scrapy web-crawler

这是我第一次在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页。

如果有人可以解决我的问题,请帮忙。非常感谢,如果您有兴趣阅读此书并需要更多信息来解决我的问题,请务必提出来。

谢谢!!

0 个答案:

没有答案