【问题标题】:Scrapy for dynamic contentScrapy 动态内容
【发布时间】:2017-04-05 15:20:10
【问题描述】:

我们可以使用 Scrapy 从 Javascript 加载的网页中获取内容吗?

我正在尝试从this 页面中抓取使用示例, 但由于它们是使用 Javascript 作为 JSON 对象加载的,因此我无法使用 Scrapy 获取它们。

您能否建议处理此类问题的最佳方法?

【问题讨论】:

    标签: python web-scraping scrapy


    【解决方案1】:

    打开浏览器的开发人员工具并查看“网络”选项卡。如果您在该页面上点击“下一步”按钮足够多,它将发出一个新请求:

    删除 JSONP 参数后,URL 非常简单:

    https://corpus.vocabulary.com/api/1.0/examples.json?query=unalienable&maxResults=24&startOffset=24&filter=0
    

    通过发出最少数量的请求,您的蜘蛛会很快。

    如果您只想模拟一个完整的浏览器并执行 JavaScript,您可以使用 Selenium 或 Scrapinghub's Splash(及其对应的 Scrapy plugin)之类的东西。

    【讨论】:

    • 我得到了那个 url,但它返回了一个文本文件,我可以再次使用 scrappy 进行废弃。我想从文件中提取句子。我怎样才能做到这一点? PS-谢谢你的回答:)
    • 它是 JSON。用json.loads解析它:stackoverflow.com/questions/18171835/…
    • 我已经试过了,它返回错误 ValueError: No JSON object could be decoded json.loads(response.body_as_unicode())
    • 我不知道怎么做!但是在我重新启动scrapy shell后它起作用了。谢谢你的帮助! :)
    • 您能解释一下为什么要从 URL 中删除 JSONP 参数吗?
    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2012-02-27
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多