- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的Scrapy代码无效。我正在尝试抓取论坛,但收到错误。
这是我的代码:
import scrapy, time
class ForumSpiderSpider(scrapy.Spider):
name = 'forum_spider'
allowed_domains = ['visforvoltage.org/latest_tech/']
start_urls = ['http://visforvoltage.org/latest_tech//']
def parse_urls(self, response):
for href in response.css(r"tbody a[href*='/forum/']::attr(href)").extract():
url = response.urljoin(href)
print(url)
req = scrapy.Request(url, callback=self.parse_data)
time.sleep(10)
yield req
def parse_data(self, response):
for sel in response.css('html').extract():
data = {}
data['name'] = response.css(r"div[class='author-pane-line author-name'] span[class='username']::text").extract()
data['date'] = response.css(r"div[class='forum-posted-on']:contains('-') ::text").extract()
data['title'] = response.css(r"div[class='section'] h1[class='title']::text").extract()
data['body'] = response.css(r"div[class='field-items'] p::text").extract()
yield data
next_page = response.css(r"li[class='pager-next'] a[href*='page=']::attr(href)").extract()
if next_page:
yield scrapy.Request(
response.urljoin(next_page),
callback=self.parse_urls)
这是一个错误:
[scrapy.core.scraper] ERROR: Spider error processing <GET https://visforvoltage.org/latest_tech> (referer: None)
raise NotImplementedError('{}.parse callback is not defined'.format(self.__class__.__name__))
NotImplementedError: ForumSpiderSpider.parse callback is not defined
如果有人可以帮助我,我将不胜感激!
最佳答案
父类scrapy.Spider
具有一个称为start_requests
的方法。该方法将检查您的start_urls
并为蜘蛛创建第一个请求。
该方法希望您有一个称为parse
的方法作为回调函数。因此,解决问题的最快方法是将parse_urls
方法更改为parse
,如下所示:
def parse(self, response):
for href in response.css(r"tbody a[href*='/forum/']::attr(href)").extract():
url = response.urljoin(href)
print(url)
req = scrapy.Request(url, callback=self.parse_data)
time.sleep(10)
yield req
如果要更改该行为,则需要覆盖类中的
start_requests
方法,以便可以确定回调函数的名称。
例如:
def start_requests(self):
for url in self.start_urls:
yield Request(url, callback=self.parse_urls, dont_filter=True)
关于python - 尝试抓取蜘蛛时出现错误(NotImplementedError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063388/
我想使用这个过滤器从网站 http://www.quoka.de/immobilien/bueros-gewerbeflaechen 抓取数据: nur Angebote 如何使用scrapy设置这个
我正在研究制作网络爬虫/蜘蛛,但是我需要有人指出正确的方向才能上手。 基本上,我的Spider会搜索音频文件并将它们编入索引。 我只是想知道是否有人对我应该如何做有任何想法。我听说用PHP完成它会非常
如果 Nutch 页面已经在索引中,它们会再次索引它们吗?如果是这样,我该如何更改? 最佳答案 是和否。默认情况下,Nutch 只会在 1 个月的某个时间段(从内存中)重新索引页面,如果页面没有更改,
我在一个 Scrapy 项目中有两个蜘蛛。 Spider1 抓取页面列表或整个网站并分析内容。 Spider2 使用 Splash 获取 Google 上的 URL 并将该列表传递给 Spider1。
我正在使用 python scrapy 包。有没有办法在蜘蛛运行时更新 scrapy 蜘蛛设置?我尝试了 telnet 控制台并通过以下方式更新设置: settings.set('AUTOTHROTT
我正在尝试安装 Sphider 来搜索我的网站,当我尝试创建 MySQL 表时出现此错误: create table query_log ( query varchar(255), tim
正在关注 How to pass a user defined argument in scrapy spider ,我写了下面这个简单的蜘蛛: import scrapy class Funda1S
我正在开发一个简单的抓取工具来获取 9 个搞笑帖子及其图片,但由于一些技术困难,我无法停止抓取工具,它继续抓取,这是我不想要的。我想增加计数器值并在 100 个帖子后停止。但是 9gag 页面的设计方
我创建了一个 Scrapy 蜘蛛。但我想将它作为脚本运行。我该怎么做。现在我可以在终端中通过这个命令运行: $ scrapy crawl book -o book.json 但我想像运行一个简单的 p
我正在尝试构建一个系统来运行 a few dozen Scrapy spiders ,将结果保存到 S3,并在完成时通知我。 StackOverflow 上有几个类似的问题(例如 this one 和
我正在用 Python 编写蜘蛛来抓取网站。问题是,我需要检查大约 250 万页,所以我真的需要一些帮助来优化它的速度。 我需要做的是检查一定数量的页面,如果找到就记录该页面的链接。蜘蛛非常简单,它只
我需要创建一个用户可配置的网络蜘蛛/爬虫,我正在考虑使用 Scrapy。但是,我无法对域和允许的 URL regex:es 进行硬编码——这将在 GUI 中进行配置。 我如何(尽可能简单地)使用 Sc
我已经开始使用 Scrapy抓取一些网站。如果我稍后向我的模型添加一个新字段或更改我的解析函数,我希望能够离线“重放”下载的原始数据以再次抓取它。看起来 Scrapy 有能力在某一时刻将原始数据存储在
我的问题实际上是如何做与上一个问题相同的事情,但在 Scrapy 0.14 中。 Using one Scrapy spider for several websites 基本上,我有一个 GUI,它
我有一个关于 python (Python 2.7) IDE Spider (2.3.5.2) 的具体问题 今天我注意到我的脚本作为一个整体运行时有所不同,即当我按 F5 时。或者当我只运行一行或一个
我有一个 crontab 作业,运行一个 myautorun.sh 文件,其中包含 3 个蜘蛛: crontab -e 14 * * * * * ~bin/myautorun.sh myautorun
到目前为止,我的代码可以打开一个文本文件,将其处理成一个 pandas 数据文件,然后导出到 excel。 我正在与其他人共享此代码,我们在 Spyder 中都有相同的工作目录。所有代码都运行良好,我
最近想为Openstack添加自动登录功能。所以我为 openstack 编写了一个 python 蜘蛛,如下所示: import urllib import urllib2 import cooki
如何使用 PHP 检测爬虫/蜘蛛? 我目前正在做一个项目,我需要跟踪每个爬虫的访问。 我知道你应该使用 HTTP_USER_AGENT 但我不太确定如何为此目的格式化代码而且我知道可以很容易地更改 U
我已经使用 scrapy 编写了一个工作爬虫, 现在我想通过一个Django webapp来控制它,也就是说: 设置1个或多个start_urls 设置 1 个或多个 allowed_domains
我是一名优秀的程序员,十分优秀!