问题标签 [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 投票
1 回答
3755 浏览

python - Scrapy make_requests_from_url(url)

在 Scrapy 教程中有 BaseSpider 的这个方法:

make_requests_from_url(url)

一种接收 URL 并返回请求对象(或请求对象列表)以进行抓取的方法。

该方法用于构造 start_requests() 方法中的初始请求,通常用于将 url 转换为请求。

除非被覆盖,否则此方法会返回带有 parse() 方法作为其回调函数的请求,并启用 dont_filter 参数(有关更多信息,请参阅请求类)。

你明白这个方法的作用吗?我可以使用 makerequestsfrom_url 和 BaseSpider 代替不适合我的 SgmlLinkExtractor 和 CrawlSpider 吗?

我试图抓取的不仅仅是给定的初始 url,而 Scrapy 没有这样做。

谢谢

0 投票
1 回答
4214 浏览

python - Scrapy SgmlLinkExtractor 忽略允许的链接

请查看 Scrapy 文档中的这个蜘蛛示例。解释是:

该蜘蛛将开始爬取 example.com 的主页,收集类别链接和项目链接,并使用 parse_item 方法解析后者。对于每个项目响应,将使用 XPath 从 HTML 中提取一些数据,并用它填充一个项目。

我完全复制了同一个蜘蛛,并用另一个初始网址替换了“example.com”。

但是我的蜘蛛“stb”没有像它应该做的那样从“/bios/”收集链接。它运行初始 url,抓取item['JD']并写入文件,然后退出。

为什么会SgmlLinkExtractor被忽略?被Rule读取是因为它捕获了Rule行内的语法错误。

这是一个错误吗?我的代码有问题吗?除了我在每次运行时看到的一堆未处理的错误外,没有任何错误。

很高兴知道我在这里做错了什么。感谢您提供任何线索。我误解了SgmlLinkExtractor应该做什么吗?

0 投票
2 回答
2234 浏览

python - 如何使用 Scrapy 从数据库中删除过期项目

我正在使用爬取内容频繁过期的视频网站。我正在考虑使用 scrapy进行爬虫,但不确定如何删除过期项目。

检测项目是否过期的策略是:

  1. 蜘蛛网站的“delete.rss”。
  2. 每隔几天,尝试重新加载内容页面并确保它仍然有效。
  3. 爬取网站内容索引的每一页,如果没有找到视频,则将其删除。

请让我知道如何删除scrapy中的过期项目。我将通过 django 将我的 scrapy 项目存储在 mysql DB 中。

2010-01-18 更新

我找到了一个可行的解决方案,但仍然可能不是最佳的。我在我同步的每个视频上都维护一个“found_in_last_scan”标志。当蜘蛛启动时,它将所有标志设置为 False。完成后,它会删除仍将标志设置为 False 的视频。我通过附加来做到这一点signals.spider_openedsignals.spider_closed 请确认这是一个有效的策略并且没有问题。

0 投票
2 回答
5716 浏览

python - 如何构建一个基于 Scrapy 的网络爬虫永远运行?

我想建立一个基于 Scrapy 的网络爬虫,从几个新闻门户网站抓取新闻图片。我希望这个爬虫是:

  1. 永远奔跑

    意味着它将定期重新访问一些门户页面以获取更新。

  2. 安排优先事项。

    为不同类型的 URL 赋予不同的优先级。

  3. 多线程获取

我已经阅读了 Scrapy 文档,但没有找到与我列出的内容相关的内容(可能是我不够小心)。这里有人知道怎么做吗?或者只是给出一些想法/例子。谢谢!

0 投票
3 回答
5028 浏览

python - Scrapy 安装:在 $PATH 中找不到可接受的 C 编译器

我正在尝试在 Mac OS X 10.6.2 机器上安装Scrapy ...当我尝试构建依赖模块之一( libxml2 )

我收到以下错误:

我假设我需要 gcc 编译器……在 10.6 上安装这么容易吗?是否有某种我应该安装的包,以免像在 Python 中安装模块那样被挂断?

0 投票
2 回答
2157 浏览

python - 在 Mac Os X 10.6 上安装 scrapy 时出错

尝试使用本指南在 Mac OSX 10.6 上安装 Scrapy :

从终端运行这些命令时:

我收到以下错误:

按照指南中的第一步,包括构建和安装 libxml2 和 libxslt 包似乎是成功的......

0 投票
4 回答
7261 浏览

python - 对多个网站使用一个 Scrapy 蜘蛛

我需要创建一个用户可配置的网络蜘蛛/爬虫,我正在考虑使用 Scrapy。但是,我不能硬编码域和允许的 URL regex:es——这将在 GUI 中进行配置。

我如何(尽可能简单)使用 Scrapy 创建一个蜘蛛或一组蜘蛛,其中域和允许的 URL regex:es 是动态可配置的?例如,我将配置写入文件,然后蜘蛛以某种方式读取它。

0 投票
2 回答
10750 浏览

javascript - 如何使用scrapy中的CrawlSpider单击带有javascript onclick的链接?

我希望 scrapy 抓取进入下一个链接的页面,如下所示:

scrapy 能够解释其中的 javascript 代码吗?

通过livehttpheaders扩展,我发现单击 Next 会生成一个 POST,其中包含一个非常大的“垃圾”,如下所示:

我正在尝试在CrawlSpider该类上构建我的蜘蛛,但我无法真正弄清楚如何对其进行编码,BaseSpider我使用该parse()方法来处理第一个 URL,这恰好是一个登录表单,我在其中进行了 POST:

然后我定义了 submit_next() 来告诉下一步该做什么。我不知道如何告诉 CrawlSpider 在第一个 URL 上使用哪种方法?

我爬的所有请求,除了第一个,都是 POST 请求。他们交替使用两种类型的请求:粘贴一些数据,然后单击“下一步”转到下一页。

0 投票
3 回答
6004 浏览

python - 使用 BeautifulSoup 获取文档 DOCTYPE

我刚刚开始与BeautifulSoup一起修补scrapy ,我想知道我是否遗漏了一些非常明显的东西,但我似乎无法弄清楚如何从生成的汤对象中获取返回的 html 文档的文档类型。

给定以下html:

谁能告诉我是否有一种方法可以使用 BeautifulSoup 从中提取声明的文档类型?

0 投票
1 回答
990 浏览

python - 抓取域列表的登录页面

我有一个相当长的网站列表,我想下载它们的登陆(index.html 或等效)页面。我目前正在使用 Scrapy(非常喜欢它背后的人——这是一个很棒的框架)。Scrapy 在此特定任务上的速度比我想要的要慢,我想知道 wget 或其他替代方法是否会更快,因为该任务非常简单。有任何想法吗?

(这就是我用 Scrapy 做的事情。我能做些什么来优化这个任务的 scrapy 吗?)

所以,我有一个起始 URL 列表,例如

start_urls=[google.com yahoo.com aol.com]

我从每个响应中抓取文本并将其存储在 xml 中。我需要关闭异地中间件以允许多个域。

Scrapy 按预期工作,但似乎很慢(大约 1000 个一小时或每 4 秒 1 个)。有没有办法通过在运行单个蜘蛛时增加 CONCURRENT_REQUESTS_PER_SPIDER 的数量来加快速度?还要别的吗?