首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何刮掉一个懒惰的加载表单?

如何刮掉一个懒惰的加载表单?
EN

Stack Overflow用户
提问于 2016-11-22 09:36:20
回答 1查看 1.6K关注 0票数 1

我正在使用Scrapy1.2爬行一个在线数据库(http://bddatabase.net/jp/weapon/)。

下面是我的代码的一瞥:

代码语言:javascript
复制
class BdItemSpider(scrapy.Spider):
    name = "bdspider"

    start_urls = [
        "http://bddatabase.net/jp/weapon/"
    ]

    def parse(self, response):
        item = BdItem()
        items = response.xpath("//table[@id='WeaponTable']/tbody//tr/td/text()")
        print(items.extract())

这是日志:

代码语言:javascript
复制
2016-11-22 18:23:14 [scrapy] INFO: Spider opened
2016-11-22 18:23:14 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-11-22 18:23:14 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-11-22 18:23:16 [scrapy] DEBUG: Crawled (200) <GET http://bddatabase.net/jp/weapon/> (referer: None)
['Loading data from server']
2016-11-22 18:23:16 [scrapy] DEBUG: Scraped from <200 http://bddatabase.net/jp/weapon/>
{}
2016-11-22 18:23:16 [scrapy] INFO: Closing spider (finished)

它从服务器消息中返回一个加载数据的。刷新后,我发现页面加载表单1~1.5秒。因此,我想知道如何才能正确地获得这个表单中的项目,因为它似乎提供了一个动态的形式,而不是静态的。

EN

回答 1

Stack Overflow用户

发布于 2016-11-22 09:54:05

我认为解决这个问题有两种方法。

第一个,正如eLRuLL所评论的,是实际执行JavaScript呈现。然而,硒可能比所需的要复杂。您可以尝试使用像PhantomJS或Splash这样的无头浏览器。这些无头浏览器将为您呈现JavaScript。这种方法比较容易实现,但对刮板的性能有一定的影响。

第二个选项实际上是刮取XHR请求的HTTP位置。在Firefox中,您可以使用Firebug扩展来过滤所有XHR请求并找到正确的请求。一般来说,这个选项给了我一个更好的性能,虽然它可以更复杂的实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40738264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档