Python Scrapy:努力实现爬行爬行器

Python Scrapy:努力实现爬行爬行器,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我一直在尝试实现一个网络爬虫来从黑客新闻网站上抓取标题和要点。通过使用普通的scrapy.spider类,我成功地解析了它。然而,我希望有一种使用链接提取器在链接中爬行的健壮方法。以下是我当前的设置: import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class QuotesSpider(CrawlSpider): name

我一直在尝试实现一个网络爬虫来从黑客新闻网站上抓取标题和要点。通过使用普通的scrapy.spider类,我成功地解析了它。然而,我希望有一种使用链接提取器在链接中爬行的健壮方法。以下是我当前的设置:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class QuotesSpider(CrawlSpider):
    name = "crawl"
    allowed_domains = ['news.ycombinator.com']

    start_urls = [
        'https://news.ycombinator.com/news?p=2',
    ]


    rules = [
    Rule(LinkExtractor(allow=r'news?p=[3-9]'), callback='parse_news', follow=True)
]
 
    def parse_news(self, response):

        data = {}
        title = response.xpath("//td/a[@class='storylink']/text()").getall()
        point = response.xpath("//td[@class='subtext']/span/text()").getall()
        length = len(title)

        for each in range(length):
            data["title"] = title[each]
            data["point"] = point[each]
            yield data

运行此操作后,我似乎无法将任何信息保存到json中。

您的代码有很多错误,但第一步,您必须修复LinkExtractor:

Rule(LinkExtractor(allow=r'news\?p=[3-9]'), callback='parse_news', follow=True)
问号是正则表达式中的一个特殊字符,因此必须在它前面加一个
\
。 接下来,您必须修复
for
循环中的数据提取过程