我一直试图实现一个网络爬虫到刮标题,并指出黑客新闻网站。通过使用普通的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中。
发布于 2020-03-29 04:00:31
您的代码有很多错误,但是作为第一步,您必须修复LinkExtractor:
Rule(LinkExtractor(allow=r'news\?p=[3-9]'), callback='parse_news', follow=True)问号是正则表达式中的一个特殊字符,因此您必须在它前面加上一个\。接下来,您必须修复for循环中的数据提取过程。
https://stackoverflow.com/questions/60699477
复制相似问题