问题标签 [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.
python - 如何在scrapy-splash中设置飞溅超时?
我使用scrapy-splash来抓取网页,并在docker 上运行splash 服务。
常见的:
但是我收到了 504 错误。
尽管我尝试添加splash.resource_timeout
, request:set_timeout
or SPLASH_URL = 'http://localhost:8050?timeout=1800.0'
,但没有任何改变。
感谢帮助。
xpath - Scrapy + Splash:在内部 html 中抓取元素
我正在使用 Scrapy + Splash 来抓取网页并尝试从谷歌广告横幅和其他广告中提取数据,但我很难通过 xpath 进入它们。
我正在使用Scrpay-Splash API 来呈现页面,以便加载它们的脚本和图像并截取屏幕截图,但似乎谷歌广告横幅是由 JS 脚本创建的,然后将其内容插入到网页中 iframe 内的新 html 文档中,这样:
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 吗?
javascript - 在 Scrapy 响应中执行内联 JavaScript
我正在尝试使用 Scrapy 登录网站,但收到的响应是一个仅包含内联 JavaScript 的 HTML 文档。JS 重定向到我要从中抓取数据的页面。但是 Scrapy 不会执行 JS,因此不会路由到我想要的页面。
我使用以下代码提交所需的登录表单:
print_p 回调函数如下:
我看过scrapy-splash,但我找不到在scrapy-splash的响应中执行JS的方法。
javascript - scrapy + splash:尝试使用 ajax 调用和 javascript 抓取网站
我正在尝试从此 url抓取前 50 页:
我已经设置了splash,我的蜘蛛文件如下:
列表.py
另一个文件urls.py基本上有起始 URL:
当我爬行时,这是我从scrapy得到的日志:
如果这是一个愚蠢的问题,我很抱歉,但我是新手,我只做了简单和静态的网络抓取。
请让我知道我做错了什么?
任何帮助深表感谢,
先感谢您。
python - Scrapy 只渲染 url 列表中的最后一个 url
我正在开发一个抓取https://e27.co/网站的网络爬虫。我使用了 scrapy-splash python 库和docker。
问题是scrapy只渲染url列表的最后一个url。
此外,当我打开 时response.body
,页面会自动将我重定向到“哎呀”页面。
我试图停止/使飞溅不遵循重定向,但它失败了。
这是我的蜘蛛:
设置.py:
以下是日志:
知道为什么我的启动画面只呈现列表的最后一个 url 吗?
python-3.x - CrawlSpider 不调用 self.parse()
我有一个 CrawlSpider 脚本,它使用 splash 在 javascript 页面上登录。然而,在成功登录后,继承的 self.parse() 函数似乎没有被调用。爬取第一页后蜘蛛关闭。
我认为 CrawlSpider 在 start_requests 产生响应后会自动调用 self.parse 方法。但即使使用显式回调,self.parse 似乎也不会被调用。
我做错了什么?
剧本:
lua - 如何捕捉 splash:on_response 重试错误和项目?
我正在使用 scrapy、splash 和 scrapy_splash 来抓取目录网站。
该网站使用表单 POST 打开一个新的项目详细信息页面。
有时,项目详细信息页面会在 Splash 中显示默认错误页面(与 HTTP 状态无关),但是如果我再次重新发布表单,则返回项目详细信息。我仍在调查响应的根本原因。这似乎更像是一个时间问题,而不是 n 个请求后的特定检查。
作为一种解决方法,我使用 splash:on_response 方法在收到错误页面时重试表单发布。
我希望能够记录失败的尝试以供以后手动处理。是否有收集这些信息的最佳实践或标准方法?
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
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 有不同的方法吗?
splash-screen - Splash 不会呈现页面的所有内容
我正在使用Splash v2.3.2,我正在尝试渲染一个页面,但它并没有渲染所有内容。它不会渲染图像或动态加载的内容。
我将我的http://localhost:8050/与脚本一起使用:
我试图改变等待时间,也试图允许插件。这些都不行。我假设动态加载的内容受到限制,但我不确定。任何帮助表示赞赏。