首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取以下链接,提取新链接并跟踪它们

抓取以下链接,提取新链接并跟踪它们
EN

Stack Overflow用户
提问于 2019-01-03 16:10:13
回答 1查看 29关注 0票数 0

我试图创建一个刮刀,为其产品刮一个网站。我决定从导航菜单中提取所有类别链接,然后跟踪它们并提取所有产品链接,稍后我将在parse_product函数中解析这些链接。但我不知道什么是最好的方法。我正在与以下的parse_menu链接和进一步的抽离产品链接挣扎。请批评我的代码。

代码语言:javascript
复制
class DiorSpider(CrawlSpider):
    name = 'newdior'
    allowed_domains = ['www.dior.com']
    start_urls = ['https://www.dior.com/en_us/']
    rules = (
        Rule(LinkExtractor(allow=(r'^https?://www.dior.com/en_us',
                                  )), callback='parse_menu'),
        Rule(LinkExtractor(allow=(r'^https?://www.dior.com/en_us/products/.*',
                                  )), callback='parse_product'),

    )

    def parse_menu(self, response):
        menu = response.xpath('//a[@class="navigation-item-link"]').extract()
        for item in menu:
            link = re.compile(r'a class="navigation-item-link" href="([a-zA-Z0-9_/-]*)"').findall(item)
            if link:
                absolute_url = response.urljoin(link[0])
                yield absolute_url


    def parse_product(self, response):
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-03 16:25:53

代码语言:javascript
复制
class DiorSpider(Spider):  #crawlspider is used mostly when you use Linkextractors.
    name = 'newdior'
    allowed_domains = ['www.dior.com']
    start_urls = ['https://www.dior.com/en_us/']

    #if you're going through nevigation bar, no need to add Rules.

    def parse(self, response):
        links = response.xpath('//a[@class="navigation-item-link"]/@href').extract()    #here you can easily extract links
        for link in links:
            #link = re.compile(r'a class="navigation-item-link" href="([a-zA-Z0-9_/-]*)"').findall(item) 
            #links are extracted in xpath above.
            absolute_url = response.urljoin(link)
            yield Request(absolute_url, self.parse_product)


    def parse_product(self, response):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54025952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档