【问题标题】:Need for help in this scrapy regular expression在这个scrapy正则表达式中需要帮助
【发布时间】:2014-10-30 08:18:59
【问题描述】:

我对scrapy很陌生,我正在尝试使用CrawlSpider抓取一个网站,我想根据“下一步”按钮递归地抓取它。但它不起作用。我认为问题来自正则表达式,但我检查了很多次,我找不到错误。它只抓取着陆页而不进入下一页。

# -*- coding: utf-8 -*-

start_urls = ['https://shopping.yahoo.com/merchantrating/?mid=13652']

rules = (
    Rule(LinkExtractor(allow = "/merchantrating/;_ylt=Anf3hF19R8MGFPwuYuJUny4cEb0F\?mid=13652&sort=1&start=\d+"), callback = 'parse_start_url', follow = True),
)

def parse_start_url(self, response):
    sel = Selector(response)
    contents = sel.xpath('//p')
    for content in contents:
        item = BedbugsItem()
        item['pageContent'] = content.xpath('text()').extract()
        self.items.append(item)
    return self.items

【问题讨论】:

    标签: python regex scrapy


    【解决方案1】:

    改用 XPath:

    rules = (
        Rule(LinkExtractor(
            restrict_xpaths = [
                "//div[@class='pagination']//a[contains(., 'Next')]"
            ]),
        callback = 'parse_start_url',
        follow = True),
    )
    

    【讨论】:

    • 谢谢,它成功了,但你能告诉我为什么我的解决方案不能正常工作吗?
    • @PoppinDouble 我认为是;_ylt=Anf3hF19R8MGFPwuYuJUny4cEb0F 位——看起来像是一些仅在浏览器中有效的跟踪东西。
    猜你喜欢
    • 2012-11-30
    • 2023-03-19
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多