首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抓取:努力实现爬行蜘蛛

抓取:努力实现爬行蜘蛛
EN

Stack Overflow用户
提问于 2020-03-16 02:00:10
回答 1查看 38关注 0票数 0

我一直试图实现一个网络爬虫到标题,并指出黑客新闻网站。通过使用普通的scrapy.spider类,我成功地解析了它。然而,我想有一个强有力的方式,通过链接提取器的链接爬行。下面是我当前的设置:

代码语言:javascript
运行
复制
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中。

EN

回答 1

Stack Overflow用户

发布于 2020-03-29 04:00:31

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

代码语言:javascript
运行
复制
Rule(LinkExtractor(allow=r'news\?p=[3-9]'), callback='parse_news', follow=True)

问号是正则表达式中的一个特殊字符,因此您必须在它前面加上一个\。接下来,您必须修复for循环中的数据提取过程。

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

https://stackoverflow.com/questions/60699477

复制
相关文章

相似问题

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