问题标签 [scrapy-splash]

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 回答
5148 浏览

python - 如何在scrapy-splash中设置飞溅超时?

我使用scrapy-splash来抓取网页,并在docker 上运行splash 服务。

常见的:

但是我收到了 504 错误。

尽管我尝试添加splash.resource_timeout, request:set_timeoutor SPLASH_URL = 'http://localhost:8050?timeout=1800.0',但没有任何改变。

感谢帮助。

0 投票
2 回答
3400 浏览

xpath - Scrapy + Splash:在内部 html 中抓取元素

我正在使用 Scrapy + Splash 来抓取网页并尝试从谷歌广告横幅和其他广告中提取数据,但我很难通过 xpath 进入它们。

我正在使用Scrpay-Splash API 来呈现页面,以便加载它们的脚本和图像并截取屏幕截图,但似乎谷歌广告横幅是由 JS 脚本创建的,然后将其内容插入到网页中 iframe 内的新 html 文档中,这样:红色区域为 iframe 容器,蓝色为我要提取的链接

Splash 确保代码被渲染,所以我不会遇到scrapy 在脚本中读取脚本内容而不是生成的 html 的常见问题——但我似乎无法找到一种方法来指示必要的 XPath到达我需要的元素节点(广告的 href 链接)。

如果我在 google 中检查元素并复制它的 xpath,它只会给我//*[@id="aw0"],如果 iframe 的 html 就在这里,我觉得这会起作用,但无论我怎么写它都会返回空,我觉得这可能是因为 XPath 没有t 优雅地处理堆叠在 html 文档中的 html 文档。

包含 google 广告代码的 iframe 的 XPath 是 //*[@id="google_ads_iframe_/87824813/hola/blogs/home_0"]{the numbers are constant}。

有没有办法将这些 XPaths 堆叠在一起,让scrapy 跟踪到我需要的容器中?或者我应该以其他方式直接解析 Splash 响应对象并且我不能依赖 Response.Xpath/Response.CSS 吗?

0 投票
2 回答
2845 浏览

javascript - 在 Scrapy 响应中执行内联 JavaScript

我正在尝试使用 Scrapy 登录网站,但收到的响应是一个仅包含内联 JavaScript 的 HTML 文档。JS 重定向到我要从中抓取数据的页面。但是 Scrapy 不会执行 JS,因此不会路由到我想要的页面。

我使用以下代码提交所需的登录表单:

print_p 回调函数如下:

我看过scrapy-splash,但我找不到在scrapy-splash的响应中执行JS的方法。

0 投票
1 回答
1668 浏览

javascript - scrapy + splash:尝试使用 ajax 调用和 javascript 抓取网站

我正在尝试从此 url抓取前 50 页:

https://www.realtor.ca/Residential/Map.aspx#CultureId=1&ApplicationId=1&RecordsPerPage=9&MaximumResults=9&PropertySearchTypeId=1&TransactionTypeId=2&StoreyRange=0-0&BedRange=0-0&BathRange=0-0&LongitudeMin=-80.62866210937504&LongitudeMin350=-78.1430Max=-78.1430 43.20517581723729&LatitudeMax=44.1309708567274&SortOrder=A&SortBy=1&viewState=g&Longitude=-79.3858337402344&Latitude=43.6698583295497&ZoomLevel=10&PropertyTypeGroupID=1

我已经设置了splash,我的蜘蛛文件如下:

列表.py

另一个文件urls.py基本上有起始 URL:

当我爬行时,这是我从scrapy得到的日志:

如果这是一个愚蠢的问题,我很抱歉,但我是新手,我只做了简单和静态的网络抓取。

请让我知道我做错了什么?

任何帮助深表感谢,

先感谢您。

0 投票
0 回答
266 浏览

python - Scrapy 只渲染 url 列表中的最后一个 url

我正在开发一个抓取https://e27.co/网站的网络爬虫。我使用了 scrapy-splash python 库和docker

问题是scrapy只渲染url列表的最后一个url。

此外,当我打开 时response.body,页面会自动将我重定向到“哎呀”页面。

我试图停止/使飞溅不遵循重定向,但它失败了。

这是我的蜘蛛

设置.py

以下是日志

知道为什么我的启动画面只呈现列表的最后一个 url 吗?

0 投票
0 回答
250 浏览

python-3.x - CrawlSpider 不调用 self.parse()

我有一个 CrawlSpider 脚本,它使用 splash 在 javascript 页面上登录。然而,在成功登录后,继承的 self.parse() 函数似乎没有被调用。爬取第一页后蜘蛛关闭。

我认为 CrawlSpider 在 start_requests 产生响应后会自动调用 self.parse 方法。但即使使用显式回调,self.parse 似乎也不会被调用。

我做错了什么?

剧本:

0 投票
0 回答
581 浏览

lua - 如何捕捉 splash:on_response 重试错误和项目?

我正在使用 scrapy、splash 和 scrapy_splash 来抓取目录网站。

该网站使用表单 POST 打开一个新的项目详细信息页面。

有时,项目详细信息页面会在 Splash 中显示默认错误页面(与 HTTP 状态无关),但是如果我再次重新发布表单,则返回项目详细信息。我仍在调查响应的根本原因。这似乎更像是一个时间问题,而不是 n 个请求后的特定检查。

作为一种解决方法,我使用 splash:on_response 方法在收到错误页面时重试表单发布。

我希望能够记录失败的尝试以供以后手动处理。是否有收集这些信息的最佳实践或标准方法?

0 投票
2 回答
3227 浏览

scrapy - Scrapy + Splash = 拒绝连接

我使用此链接安装了Splash。按照所有步骤安装,但 Splash 不起作用。

我的settings.py文件:

当我运行时scrapy crawl TestSpider

这是我的蜘蛛

我试图在终端中运行它:curl http://localhost:8050/render.html?url=http://www.google.com/"

输出:

curl: (7) 无法连接到 localhost 端口 8050: Connection Refused

0 投票
1 回答
624 浏览

scrapy - scrapy-splash 脚本找不到 CSS 选择器

我正在尝试制作一个scrapy-splash脚本来获取以下食物的链接:

https://www.realcanadiansuperstore.ca/Food/Meat-%26-Seafood/c/RCSS001004000000

当您第一次访问它时,它会让您选择一个地区。我想我已经通过在下面的代码中设置 cookies dict 正确地解决了这个问题。我正在尝试获取轮播中所有食品的链接。我正在使用 splash,因为轮播是由 javascript 制作的,并且使用漂亮的汤进行常规请求和解析不会在 html 中显示它。我的问题是我没有将任何数据放入我的“项目”字典中。

我认为我的 cookie 设置不正确,所以它会将我带到需要选择区域的页面。

顺便说一句,我也在 docker 控制台上运行了 splash。如果我在浏览器中访问我的本地主机,它会显示启动页面。

这是我从爬虫中得到的输出:

这里可能出了什么问题?我已经按照此处所述填写了我的设置文件: https ://github.com/scrapy-plugins/scrapy-splash

好的,我已经能够通过像这样设置 cookie 来获取 Splash 的 localhost 浏览器实例来呈现我需要的 HTML:

但这是在浏览器中作为脚本可以输入的。如何将此应用于我的 python 脚本?在 Python 中添加 cookie 有不同的方法吗?

0 投票
2 回答
2204 浏览

splash-screen - Splash 不会呈现页面的所有内容

我正在使用Splash v2.3.2,我正在尝试渲染一个页面,但它并没有渲染所有内容。它不会渲染图像或动态加载的内容。

我将我的http://localhost:8050/与脚本一起使用:

这是一个浏览器渲染: 浏览器渲染

这是 Splash 渲染的屏幕截图: 飞溅渲染

我试图改变等待时间,也试图允许插件。这些都不行。我假设动态加载的内容受到限制,但我不确定。任何帮助表示赞赏。