问题标签 [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.

0 投票
2 回答
1166 浏览

python - 递归使用 Scrapy 从网站抓取网页

我最近开始使用 Scrapy。我正在尝试从一个大列表中收集一些信息,该列表分为几页(大约 50 页)。我可以轻松地从第一页中提取我想要的内容,包括start_urls列表中的第一页。但是,我不想将这 50 个页面的所有链接都添加到此列表中。我需要一种更动态的方式。有谁知道我如何迭代地抓取网页?有没有人有这方面的例子?

谢谢!

0 投票
1 回答
2566 浏览

scrapy - 在 Scrapy 的项目中使用多个蜘蛛

我想知道是否可以在同一个项目中同时使用多个蜘蛛。其实我需要2只蜘蛛。第一个收集第二个蜘蛛应该抓取的链接。他们都在同一个网站上工作,所以域是相似的。有可能吗?如果是,你能给我一个例子吗?谢谢

0 投票
1 回答
2097 浏览

python - 使用 scrapy 抓取 yahoo 组的问题

我是网络抓取的新手,刚刚开始尝试使用Python 编写的抓取框架Scrapy。我的目标是抓取一个旧的 Yahoo Group,因为他们不提供 API 或任何其他方式来检索消息档案。雅虎集团的设置是您必须先登录才能查看档案。

我认为我需要完成的步骤是:

  1. 登录雅虎
  2. 访问第一条消息的 URL 并抓取它
  3. 对下一条消息重复步骤 2,以此类推

我开始粗略地制作一个爬虫来完成上述工作,这就是我到目前为止所拥有的。我想观察的是登录有效并且我能够检索第一条消息。一旦我完成了这么多工作,我将完成剩下的工作:

但是,当我运行蜘蛛时,我看到它登录并发出第一条消息的请求。但是,我在 scrapy 的调试输出中看到的只是 3 次重定向,最终到达了我最初要求的 URL。但是scrapy没有调用我的parse_msg()回调,并且爬行停止了。这是scrapy输出的片段:

我无法理解这一点。看起来雅虎正在重定向蜘蛛(也许是为了进行身份验证?),但它似乎回到了我想首先访问的 URL。但是scrapy 没有调用我的回调,我也没有机会抓取数据或继续爬行。

有没有人对正在发生的事情和/或如何进一步调试有任何想法?谢谢!

0 投票
5 回答
50710 浏览

python - Scrapy - 如何管理 cookie/会话

我对 cookie 如何与 Scrapy 一起工作以及您如何管理这些 cookie 感到有些困惑。

这基本上是我正在尝试做的简化版本: 在此处输入图像描述


网站的运作方式:

当您访问该网站时,您会获得一个会话 cookie。

当您进行搜索时,网站会记住您搜索的内容,因此当您执行诸如转到下一页结果之类的操作时,它会知道它正在处理的搜索。


我的脚本:

我的蜘蛛有一个 searchpage_url 的起始 url

搜索页面被请求parse()并且搜索表单响应被传递给search_generator()

search_generator()然后yield使用大量搜索请求FormRequest和搜索表单响应。

这些 FormRequest 中的每一个以及后续的子请求都需要拥有自己的会话,因此需要拥有自己的单独 cookiejar 和自己的会话 cookie。


我已经看到文档的部分讨论了阻止合并 cookie 的元选项。这实际上是什么意思?这是否意味着发出请求的蜘蛛将在其余生中拥有自己的 cookiejar?

如果 cookie 然后在每个蜘蛛级别上,那么当产生多个蜘蛛时它是如何工作的?是否可以只让第一个请求生成器产生新的蜘蛛并确保从那时起只有那个蜘蛛处理未来的请求?

我假设我必须禁用多个并发请求。否则一个蜘蛛会在同一个会话 cookie 下进行多次搜索,而未来的请求只会与最近的搜索有关?

我很困惑,任何澄清都会受到极大的欢迎!


编辑:

我刚刚想到的另一个选项是完全手动管理会话 cookie,并将其从一个请求传递到另一个请求。

我想这意味着禁用 cookie.. 然后从搜索响应中获取会话 cookie,并将其传递给每个后续请求。

这是你在这种情况下应该做的吗?

0 投票
2 回答
16275 浏览

python - 试图让 Scrapy 进入项目以运行 Crawl 命令

我是 Python 和 Scrapy 的新手,我正在学习 Scrapy 教程。我已经能够通过使用 DOS 界面并键入以下内容来创建我的项目:

教程后面会提到 Crawl 命令:

但是每次我尝试运行时,我都会收到一条消息,指出这不是一个合法的命令。在进一步环顾四周时,我似乎需要进入一个项目,而这是我无法弄清楚的。我尝试将目录更改为我在 startproject 中创建的“dmoz”文件夹,但它根本无法识别 Scrapy。

我确定我遗漏了一些明显的东西,我希望有人能指出它。

0 投票
3 回答
17378 浏览

python - Scrapy:连接被拒绝

尝试测试 scrapy 安装时收到错误消息:

版本:

  • Scrapy 0.12.0.2536
  • Python 2.6.6
  • 操作系统:Ubuntu 10.10

编辑:我可以使用我的浏览器、wget、telnet google.es 80 访问它,并且所有站点都会发生这种情况。

0 投票
2 回答
5690 浏览

python - Scrapy:跳过项目并继续执行

我正在做一个 RSS 蜘蛛。如果当前项目中没有匹配项,我想继续执行蜘蛛忽略当前节点......到目前为止,我得到了这个:

(信息是之前从 xpath 中清除的字符串...)

但我得到了这个例外:

蜘蛛

那么我怎样才能忽略这个节点并继续执行呢?

0 投票
2 回答
229 浏览

python - Scrapy:RSS 控制 pub_date

我正在做一个 RSS 蜘蛛。您如何控制上次抓取日期?

现在我在想的是这样的:

  • 将我抓取的最后一个 pub_date 放入控制文件中。
  • 然后,当爬网开始时,它会根据新的 pub_dates 检查最后一个 pub_date。如果有新项目,则开始爬行,如果没有,则不执行任何操作。

其他人如何解决这个问题?

0 投票
4 回答
4050 浏览

python - 刮取数据而无需明确定义要刮取的每个字段

我想抓取一页数据(使用 Python Scrapy 库),而不必在页面上定义每个单独的字段。相反,我想使用id元素的作为字段名称来动态生成字段。

起初,我认为最好的方法是建立一个收集所有数据的管道,并在获得所有数据后输出。

然后我意识到我需要在一个项目中将数据传递给管道,但是我无法定义一个项目,因为我不知道它需要哪些字段!

我解决这个问题的最佳方法是什么?

0 投票
2 回答
1313 浏览

python - 使用scrapy选择单选按钮

我将如何选择带有scrapy的单选按钮?

我正在尝试选择以下