因此,我正在使用抓取和python在这个网站https://www.theverge.com/reviews的小爬虫工作。在那里,我试图根据我设置的规则提取评论,这些规则应该与符合以下标准的链接相匹配:
示例:https://www.theverge.com/22274747/tern-hsd-p9-ebike-review-electric-cargo-bike-price-specs
从评审页面中提取url、页面标题、进行评审的人的名称以及到其配置文件的链接。但是,我假设我的代码有问题,或者我对文件进行排序的方式有问题。因为当我试图运行这个错误时:
运行蜘蛛:错误:无法加载‘蜘蛛/vergespider.py’:没有名为‘ober3.ober3’的模块
我的文件夹是这样的。

所以我的预期结果应该是这样的。访问多达20页,我不太明白如何通过擦伤设置修复,但这是另一个问题。
authorlink,authorname,title,url
"https://www.theverge.com/authors/cameron-faulkner,https://www.twitter.com/camfaulkner",Cameron 
Faulkner,"Gigabyte’s Aorus 15G is great at gaming, but not much
else",https://www.theverge.com/22299226/gigabyte-aorus-15g-review-gaming-laptop-price-specs-features所以我的问题是,是什么导致了我所得到的错误,为什么我没有从这段代码中得到任何csv输出。我是python和scrapy的新手,对代码的任何提示或改进都很感激。我想通过抓取和python保持“解决方案”,因为这些是我正在努力学习的atm。
编辑:这是我使用scrapy runspider spiders/vergespider.py -o vergetest.csv -t csv运行代码的方法。到目前为止,这就是我所编码的。
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from oblig3.items import VergeReview
class VergeSpider(CrawlSpider):
    name = 'verge'
    allowed_domains = ['theverge.com']
    start_urls = ['https://www.theverge.com/reviews']
    rules = [
        Rule(LinkExtractor(allow=r'^(https://www.theverge.com/)(/d+)/([%5E/]+$)%27'),
             callback='parse_items', follow=True),
        Rule(LinkExtractor(allow=r'.*'),
             callback='parse_items', cb_kwargs={'is_verge': False})
    ]
    def parse(self, response, is_verge):
        if is_verge:
            verge = VergeReview()
            verge['url'] = response.url
            verge['title'] = response.xpath("//h1/text()").extract_first()
            verge['authorname'] = response.xpath("//span[@class='c-byline__author-name']/text()").extract()
            verge['authorlink'] = response.xpath("//*/span[@class = 'c-byline__item'][1]/a/@href").extract()
            yield verge
        else:
            # Do something else
            pass我的物品档案
import scrapy
class VergeReview(scrapy.Item):
    url = scrapy.Field()
    title = scrapy.Field()
    authorname = scrapy.Field()
    authorlink = scrapy.Field()而且我的设置文件没有变化,尽管我应该实现CLOSESPIDER_PAGECOUNT = 20,但是要注意如何实现。
发布于 2021-03-18 04:35:15
您所犯的错误是:
runspider: error ..... No module named 'oblig3.oblig3'我从您的屏幕上看到的是,oblig3是您项目的名称。
这是一个常见的错误,当您试图运行您的蜘蛛使用:
scrapy runspider spider_file.py如果以这种方式运行蜘蛛,则需要更改运行蜘蛛的方式:首先,确保您位于scrapy.cfg所在的目录中,然后运行。
scrapy list这应该会给你一张它找到的蜘蛛的清单。
之后,您应该使用这个命令来运行您的蜘蛛。
scrapy crawl <spidername>如果这不能解决您的问题,您需要共享代码,并共享关于如何运行蜘蛛的详细信息。
https://stackoverflow.com/questions/66682639
复制相似问题