问题标签 [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 回答
7341 浏览

python - 如何使用 scrapy 的 XmlFeedSpider 解析 sitemap.xml 文件?

我正在尝试sitemap.xml使用scrapy解析文件,站点地图文件类似于以下一个只有更多url节点的文件。

我查看了相关的scrapy文档,并编写了以下代码片段以查看我是否以正确的方式进行操作(看来我没有^^):

但是当我运行蜘蛛时,我得到了这个错误:

我想我没有正确定义“默认”命名空间(http://www.sitemaps.org/schemas/sitemap/0.9),但我找不到如何做到这一点。

迭代url节点然后能够从其子节点中提取所需信息的正确方法是什么?


回答:

不幸的是,我无法使用XMLFeedSpider(这应该是解析 XML 的方式scrapy),但由于 simplebias 的回答,我已经能够想出一种方法来实现这种“老派方式”。我想出了以下代码(这次有效!):

0 投票
3 回答
15922 浏览

python - Scrapy XPath 选择器文本的 Unicode 和 UTF-8 编码问题

我正在使用 Scrapy 和 Python(作为 Django 项目的一部分)来抓取包含德语内容的网站。我已经libxml2安装为 Scrapy 选择器的后端。

如果我通过选择器提取单词'Hüftsitz'(这是它在网站上的显示方式),我会得到:u'H\ufffd\ufffdftsitz'(Scrapy XPath 选择器返回 Unicode 字符串)。

如果我将其编码为UTF-8,我得到:'H\xef\xbf\xbd\xef\xbf\xbdftsitz'。如果我打印它,我会得到'H??ftsitz'不正确的。我想知道为什么会发生这种情况。

网站character-set上的设置为UTF-8。我在sys.getdefaultencoding设置为的 Python shell 上测试上述内容UTF-8。使用将来自 XPath 选择器的数据写入具有UTF-8字符集的 MySQL 数据库的 Django 应用程序,我看到了相同的行为。

我在这里忽略了一些明显的东西吗?任何线索或帮助将不胜感激。

0 投票
2 回答
9726 浏览

python - 按照scrapy中的重定向链接

我该如何设置?我已经写了handle_httpstatus_list = [301, 302, 303],但是scrapy没有跟随新的链接,它刚刚开始保存页面的空文件。

PS 英语不是我的母语。请原谅我。

0 投票
2 回答
11588 浏览

python - Scrapy - 解析页面以提取项目 - 然后跟踪并存储项目 url 内容

我有一个关于如何在scrapy中做这件事的问题。我有一个爬取列出项目页面的蜘蛛。每次找到包含项目的列表页面时,都会调用 parse_item() 回调来提取项目数据并生成项目。到目前为止一切顺利,一切正常。

但是每个项目,除其他数据外,还有一个 url,其中包含有关该项目的更多详细信息。我想跟踪该 url 并将获取的该项目 url 的内容存储在另一个项目字段 (url_contents) 中。

而且我不确定如何组织代码来实现这一点,因为两个链接(列表链接和一个特定的项目链接)的遵循方式不同,回调在不同的时间调用,但我必须在同一个项目处理中关联它们.

到目前为止,我的代码如下所示:

0 投票
1 回答
67206 浏览

python - 将 Scrapy 与经过身份验证(登录)的用户会话一起使用

Scrapy 文档中,有以下示例来说明如何在 Scrapy 中使用经过身份验证的会话:

我有这个工作,很好。但我的问题是continue scraping with authenticated session:正如他们在最后一行的评论中所说,你必须做什么?

0 投票
4 回答
37724 浏览

python - 在 Scrapy 中使用经过身份验证的会话进行爬网

在我之前的问题中,我对我的问题不是很具体(使用 Scrapy 的经过身份验证的会话进行抓取),希望能够从更一般的答案中推断出解决方案。我可能宁愿使用这个词crawling

所以,到目前为止,这是我的代码:

如您所见,我访问的第一个页面是登录页面。如果我还没有通过身份验证(在parse函数中),我会调用我的自定义login函数,该函数会发布到登录表单。然后,如果我通过了身份验证,我想继续爬取。

问题是parse我试图覆盖以登录的功能,现在不再进行必要的调用来抓取任何其他页面(我假设)。而且我不确定如何保存我创建的项目。

以前有人做过这样的事情吗?(验证,然后爬行,使用 a CrawlSpider)任何帮助将不胜感激。

0 投票
2 回答
8431 浏览

python - Ruby 替代 Scrapy?

有哪些基于 Ruby 的工具可以帮助我实现类似于 Scrapy 为 python 所做的事情? http://doc.scrapy.org/intro/overview.html

0 投票
2 回答
1110 浏览

linux - 我将如何调试执行脚本的 cron 作业,但脚本似乎没有完成?

我有一个scrape.sh看起来像这样的 cron 工作:

当它执行时,文件 rage 确实被创建并从我的系统日志判断它确实以 root 身份运行,所以权限应该不是问题。

当我运行scrape.sh它时,它按预期执行并将foosite.xml文件放入../feeds目录中,该目录存在并且在 cron 作业启动时为空。我能做些什么来解决这个问题?

0 投票
3 回答
2390 浏览

python - 在 Google App Engine 上模拟浏览器

我想在谷歌应用引擎中使用 selenium 或 windmill 来抓取一个 JS 填充的网站。我知道风车是用 python 和 javascript 编写的。

这可能吗?如果是,如何插入库?
如果不是,您能否解释原因并提供替代方案?

谢谢。

更新

我搜索了一下,发现scrapy是纯python。
那会奏效吗?它处理javascript吗?

0 投票
1 回答
1015 浏览

python - scrapy 关注大型 XML 提要链接

我正在使用带有 itertag 的 scrapy XMLFeedSpider 来循环超过 300 Megs XML 提要。

除了将这个大提要中的每个条目保存为一个项目之外,每个条目还有一些要抓取的进一步链接,这次是指向 html 页面的链接。

我知道 html 页面是使用 CrawlerSpider 爬行的,所以我试图找到一种方法来使用这种蜘蛛来跟踪来自大型 XML 提要的链接。

谢了,兄弟们