问题标签 [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.
scrapy - 在 Splash 和 Scrapy 中自动向下滚动页面
我正在抓取一个对产品图像使用延迟加载的网站。
出于这个原因,我包括在内scrapy-splash
,以便也可以使用 splash 呈现 javascript 我可以提供一个wait
参数。以前我有一个虽然这是因为原始scrapy.Request
返回占位符图像而不是原件的时间。
我也尝试过等待 29.0 秒的参数,但我的爬虫仍然几乎没有得到 10 个项目(根据计算它应该带来 280 个项目)。我有一个项目管道,它检查项目中的图像是否为空,所以 i raise DropItem
。
我不确定,但我也注意到这不仅仅是wait
问题。当我向下滚动时,看起来图像被加载了。
我正在寻找的是一种在我的请求中自动滚动到底部行为的方法。
这是我的代码 蜘蛛
管道
设置
python - 如何从另一个启动 Scrapy 蜘蛛
我在一个 Scrapy 项目中有两个蜘蛛。Spider1 抓取页面列表或整个网站并分析内容。Spider2 使用 Splash 在 google 上获取 URL 并将该列表传递给 Spider1。
所以,Spider1抓取并分析内容,无需被Spider2调用即可使用
Spider2的代码
运行 Spider2 时出现此错误:twisted.internet.error.ReactorAlreadyRunning
并且在没有 URL 列表的情况下调用 Spider1。我尝试按照 Scrapy 文档的建议使用 CrawlRunner,但这是同样的问题。我尝试在 parse 方法中使用 CrawlProcess,它“有效”,但是我仍然有错误消息。在 parse 方法中使用 CrawlRunner 时,它不起作用。
docker - 带有 Docker 的 Splash 服务器未在 Mac 上运行
我正在尝试使用 Docker 配置 Splash 服务器,以便为 scrapy 呈现 javascript。
我下载并安装了 Docker Toolbox(由于缺乏 CPU MMU 支持,最新版本的 Docker 没有安装在我的 Macbook pro 2009 上)。
我在 Docker 快速启动终端中运行了“docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash”。该命令执行但在“启动工厂...”之后我无法恢复我的 shell 提示符。
我尝试在浏览器中访问http://localhost:8050/并 ping localhost:8050 但这不起作用:“无法访问此站点”。我将不胜感激任何帮助以了解问题所在。谢谢!
如果我重新启动 docker 并运行“docker ps”,我可以看到容器正在运行:
python - Scrapy Splash - 保持登录状态
我设法使用scrapy+splash 连接到一个网站(感谢这个线程)。
我知道我已登录,因为我可以显示一些您登录后可用的元素。但是,当我尝试使用另一个页面访问另一个页面时SplashRequest
,网站会要求再次登录。
所以看起来scrapy(或splash)并没有保持会话活跃。为了保持登录状态并保持会话处于活动状态,是否需要启用某些功能?
谢谢,
scrapy - 如何将scrapy的头信息直接传递给splash
我想根据通过scrapy登录认证获得的头信息在splash上登录。
我对此有两个问题。
问题1。
是否可以直接将scrpay登录得到的header信息传递给splash?
问题2。
使用 splash 识别不需要执行登录身份验证是否有意义?
这是我的基本代码。
感谢您阅读我的问题。
lua - 尝试 Scrapy + Splash
所以我在玩 Scrapy & Splash 并且遇到了一些问题。我尝试运行我的蜘蛛,并不断收到 HTTP 502 和 504 错误。好的,所以我尝试在浏览器中查看 Splash。首先我执行“sudo docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash --max-timeout 3600 -v3”来启动 Splash 运行,然后我去了 localhost:8050。Web UI 可以正常打开,我可以输入代码。这是我要运行的基本功能:
我尝试使用此函数渲染http://boingboing.net/blog,并得到一个“无效主机名”LUA 错误;这是日志:
如果我在不先加载 JQuery 的情况下尝试它,我会收到一个“network5”LUA 错误(这是某种超时)。日志如下:
如果我另外注释掉 resource_timeout 行,我会收到 network3 LUA 错误(同样是无效的主机名,但这次呈现方式不同)。
知道我做错了什么吗?
scrapy - Scrapy + Splash(Docker)问题
我在 AWS Ubuntu 服务器上设置了 scrapy 和 scrapy-splash。它可以正常工作一段时间,但几个小时后我会开始收到这样的错误消息;
我会发现 docker 中的启动过程要么已终止,要么没有响应。
我一直在运行启动过程;
根据scrapy-splash指令。
我尝试在 tmux shell 中启动该进程以确保 ssh 连接不会干扰 splah 进程,但没有运气。
想法?
python - 如果返回列表,如何从启动中检索?
按照此处初始源中提供的示例:https ://github.com/scrapinghub/splash/blob/master/splash/examples/render-multiple.lua
在那个 lua 脚本中,返回的是一个 lua 表而不是一个 json 对象。
使用scrapy-splash时,如何使用lua脚本返回和检索数组/列表而不是表/字典?
python - Scrapy Splash 总是返回相同的页面
对于几个 Disqus 用户中的每一个,他们的个人资料 url 都是预先知道的,我想抓取他们的名字和关注者的用户名。我正在使用scrapy
并splash
这样做。但是,当我解析响应时,它似乎总是在抓取第一个用户的页面。我尝试设置wait
to10
和dont_filter
to True
,但它不起作用。我现在该怎么办?
这是我的蜘蛛:
DisqusItem
定义如下:
结果如下:
这是文件settings.py
:
web-crawler - 如何将 LinkExtractor 与 SplashRequest 一起使用?
如何做 LinkExtractor 使用 SplashRequest 发送请求。
我运行此代码但仅将请求发送到主页,主页的链接没有被提取。
代码:
编辑有
什么意见吗?