刮削规则中的特殊字符

2024-10-01 15:35:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力搜索一个新闻网站:https://www.larazon.es/etiquetas/noticias/meta/politica#.p:3; 我首先用以下脚本测试了响应,我发现它可以工作:

class StackSpider(Spider):
    name = 'crawler_larazon'
    allowed_domains = ['larazon.es']
    start_urls = ['https://www.larazon.es/etiquetas/noticias/meta/politica#.p:3']


    def parse(self, response):
        from scrapy.shell import inspect_response
        inspect_response(response, self)

但是,当添加我的选择器和规则时,我没有得到任何响应。我刚接触scrapy,但我对可能发生的事情有两个假设:

  • LinkedExtractor url上的特殊字符把我的scraper搞砸了。我检查和测试了一些正则表达式,但似乎没有什么工作
    rules = [
    Rule(LinkExtractor(allow=r'etiquetas/noticias/meta/politica#.p:[2-3];'),
         callback='parse_item', follow=True)
    ]
  • 加载页面需要一段时间,因此我不确定是否需要配置超时
class StackCrawlerSpider(CrawlSpider):
    name = 'crawler_larazon'
    allowed_domains = ['larazon.es']
    start_urls = ['https://www.larazon.es/etiquetas/noticias/meta/politica']

    rules = [
    Rule(LinkExtractor(allow=r'etiquetas/noticias/meta/politica#.p:[2-3];'),
         callback='parse_item', follow=True)
    ]

    def parse_item(self, response):
        questions = response.xpath('//h2[@class="news__new__title news__new__title"]')
        for question in questions:
            item = StackItem()
            item['url'] = question.xpath(
                'a/@href').extract()[0]
            item['source'] = self.allowed_domains[0]
            yield item

你知道我遗漏了什么吗? 非常感谢


Tags: httpsselfesparseresponsewwwitemmeta

热门问题