问题标签 [scrapy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Scrapy 蜘蛛中动态添加到 allowed_domains
我有一个蜘蛛,它以蜘蛛开始时的一个小列表allowed_domains
开头。我需要动态地将更多域添加到此白名单中,因为从解析器中继续进行爬虫,但是由于后续请求仍在过滤中,因此以下代码无法完成。allowed_domains
解析器中是否有另一个更新?
python - 格式化 Scrapy 的 CSV 结果
我正在尝试抓取网站并将结果保存并格式化为 CSV 文件。我可以保存文件,但是有关于输出和格式的三个问题:
所有结果都位于一个单元格中,而不是多行中。列出项目以使它们出现在列表中时,是否有我忘记使用的命令?
如何删除
['u...
每个结果之前的那个?(我搜索并看到了如何这样做print
,但不是return
)有没有办法在某些项目结果中添加文本?(例如,我可以在每个交易链接结果的开头添加“http://groupon.com”吗?)
python - XPath:通过当前节点属性选择当前和下一个节点的文本
如果这是一个重复的问题,我深表歉意,但我在 SO 或其他似乎可以处理我需要的问题上找不到另一个问题。这是我的问题:
我用来从这个网页scrapy
中获取一些信息。为清楚起见,以下是我感兴趣的该网页的源代码块:
该页面上的几乎所有代码都类似于上面的代码块。
从所有这些中,我需要抓住:
- ANT101H5 生物人类学和考古学概论
- 排除:ANT100Y5
- 先决条件:ANT102H5
问题是它Exclusion:
在 a里面<span class="title2">
并且ANT100Y5
在下面的里面<a>
。
我似乎无法从这个源代码中获取它们。目前,我有尝试(并且失败)抓取的代码,ANT100Y5
如下所示:
我将不胜感激任何帮助,即使它是“你因为没有看到另一个完美回答这个问题的 SO 问题而失明”(在这种情况下,我自己将投票关闭这个问题)。我真的很无能为力。
提前致谢
编辑:@Dimitre 建议的更改后完成原始代码
我正在使用以下代码:
这给了我这个结果:
这不是我需要的输出。我究竟做错了什么?请记住,如前所述,我在 this 上运行此脚本。
python - 在运行时生成 python 正则表达式以匹配从“n”到无限的数字
我正在使用 scrapy 抓取网站并从中提取数据,scrapy 使用基于正则表达式的规则来检查是否必须解析页面或必须遵循链接。
我正在为我的蜘蛛实现恢复功能,因此它可以继续从上次访问的页面爬行。为此,当蜘蛛启动时,我从数据库中获取最后一个跟踪链接。
我的网站网址看起来像http://foobar.com/page1.html
,所以,通常,规则的正则表达式来跟踪每个链接,就像这样/page\d+\.html
。
但是我如何编写一个正则表达式使其匹配,例如第 15 页等等?另外,由于我事先不知道起点,我怎么能在运行时生成这个正则表达式?
python - XPath:通过当前节点属性选择当前和下一个节点的文本
首先,这是我之前的问题的产物。我再次发布此消息是因为我在原始帖子中接受了其答案的人建议我这样做,因为他认为该问题以前没有正确定义。尝试2:
我正在尝试从此网页中获取信息。为清楚起见,以下是页面源代码块的选择:
从上面的示例块中,我想提取以下信息:
ANT101H5 Introduction to Biological Anthropology and Archaeology
Exclusion: ANT100Y5
Prerequisite: ANT102H5
我想从网页上获取所有此类信息(请记住,某些课程可能还有额外列出的“共同要求”,或者可能根本没有列出任何先决条件/共同要求或排除项)。
我一直在尝试为此任务编写一个适当的 xpath 表达式,但我似乎无法做到恰到好处。
到目前为止,在Dimitre Novatchev的帮助下,我已经能够使用以下表达式:
但是,它会产生以下输出,似乎只获取页面上第一门课程的信息:
绝对清楚,这个输出只有在它获得关于第一门课程的正确信息的情况下才是正确的。对于该网页上列出的所有课程,我需要这样的正确信息。
我是如此接近,但我似乎无法弄清楚最后一步。
我会很感激任何帮助...在此先感谢
python - python中的Scrapy Crawler不能跟随链接?
我使用python的scrapy工具在python中编写了一个爬虫。以下是python代码:
但是,不是跟随链接,而是抛出的错误是:
有人可以向我解释发生了什么吗?由于这是文档中提到的内容,并且我将允许字段留空,因此默认情况下它本身应该遵循 True。那么为什么会出错呢?我可以对我的爬虫进行哪些优化以使其快速运行?
python - 使用 Python 和 Scrapy 进行递归爬取
我正在使用scrapy来抓取一个网站。该网站每页有 15 个列表,然后有一个下一步按钮。我遇到了一个问题,在我完成解析管道中的所有列表之前,我的下一个链接请求被调用。这是我的蜘蛛的代码:
这些行是问题所在。就像我之前说的,它们在蜘蛛完成对当前页面的爬取之前被执行。在网站的每个页面上,这导致我的 15 个列表中只有 3 个被发送到管道。
这是我的第一个蜘蛛,可能是我的设计缺陷,有没有更好的方法来做到这一点?
python - 在scrapy中修改CSV导出
我似乎错过了一些非常简单的东西。我想要做的就是;
在 CSV 导出器中用作分隔符,而不是,
.
我知道 CSV 导出器将 kwargs 传递给 csv 编写器,但我似乎无法弄清楚如何将它传递给分隔符。
我这样称呼我的蜘蛛:
python - 为什么在尝试爬取和解析网站时,scrapy 会为我抛出错误?
以下代码
抛出以下错误
当我将回调更改为“解析”并将函数更改为“解析”时,我没有收到任何错误,但没有任何内容被刮掉。我将其更改为“parse_items”,认为我可能会意外覆盖 parse 方法。也许我设置的链接提取器错误?
我想要做的是解析 CATEGORY 页面上的每个 ITEM 链接。我这样做完全错了吗?
python - 爬虫在运行两次时会产生重复项?
我在 python 中使用爬虫框架“scrapy”,并使用 pipelines.py 文件将我的项目以 json 格式存储到文件中。执行此操作的代码在 import json 下面给出
问题是当我运行我的爬虫两次(比如说)然后在我的文件中我得到重复的抓取项目。我尝试通过首先从文件中读取然后将数据与要写入的新数据匹配来阻止它,但是从读取的数据文件是 json 格式,所以我用 json.loads() 函数对其进行了解码,但它不起作用:
请提出一种方法来做到这一点。
注意:请注意,我必须以“追加”模式打开文件,因为我可能会抓取一组不同的链接,但是使用相同的 start_url 运行两次爬虫应该将相同的数据写入文件两次