【问题标题】:How to integrate javascript rendering module to scrapy?如何将javascript渲染模块集成到scrapy?
【发布时间】:2014-03-01 02:46:41
【问题描述】:

我正在开发一个网页抓取程序,但在使用带有 javascript 生成内容的 scrapy 时遇到了问题。我知道scrapy 不是为进行这种类型的抓取而构建的,但我一直在尝试使用scrapyjs 或splash 来完成我所需要的。

但是,我无法让这两个模块中的任何一个与 scrapy 一起正常工作。我的问题是,如果有人有一个最小的例子,他们可以展示使用 scrapyjs 或 splash 呈现 javascript 页面?

编辑: 我的平台是 ubuntu,我使用 python。对于scrapyjs,我只是将源代码放在scrapy 项目的最上面的目录中,我还没有找到任何关于如何使用splash 的真正指南。我询问 splash 的原因是因为它似乎是一个更强大的 javascript 渲染模块,并且在与 scrapjs 相同的对话中被多次提及。

【问题讨论】:

  • 你的平台是什么,你是怎么安装scrapyjs或者splash的?如果有任何错误,您会遇到什么错误?

标签: javascript python web-scraping scrapy


【解决方案1】:

我相信你所要做的就是实现process_links in your Spider:

def proxy_url(url):
        return "http://localhost:8050/render.html?url=%s&timeout=15&wait=1" % url


def process_links(self,links):
        for link in links:
            link.url = proxy_url(link.url)
        return links

【讨论】:

  • 我不完全理解 proxy_url() 在做什么。你能解释一下吗?
  • 我让您的解决方案以稍微修改的形式运行。
  • @Adamkucera,你能分享修改后的表格吗?
  • @MahmoudM.Abdel-Fattah 我所做的是仅在响应需要时才将启动机制用于在解析函数中生成 js。如果我不需要,我没有把它放在所有链接的前面。这有帮助吗?
  • 您能否更新您的答案并向我们展示示例。我不是每天都使用 Python,想看看你的示例代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2022-01-01
  • 2015-10-17
相关资源
最近更新 更多