如何研究懒惰的装载形式?

时间:2016-11-22 09:36:21

标签: python scrapy web-crawler

我正在使用Scrapy 1.2来抓取在线数据库(http://bddatabase.net/jp/weapon/)。

以下是我的代码:

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())

这是日志:

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秒。所以我想知道如何正确地获取此表单中的项目,因为它似乎提供了动态表单而不是静态表单。

1 个答案:

答案 0 :(得分:2)

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

eLRuLL评论的第一个是实际进行JavaScript渲染。但是,Selenium可能比需要的更复杂。您可以尝试使用像PhantomJS或Splash这样的无头浏览器。这些无头浏览器将为您呈现JavaScript。这种方法相对容易实现,但确实对刮刀的性能有影响。

第二个选项实际上是抓取XHR请求的HTTP位置。在Firefox中,您可以使用Firebug扩展来过滤所有XHR请求并找到正确的请求。通常,此选项可以提高性能,但实现起来可能会更复杂。