我正在使用Scrapy1.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秒。因此,我想知道如何才能正确地获得这个表单中的项目,因为它似乎提供了一个动态的形式,而不是静态的。
发布于 2016-11-22 09:54:05
我认为解决这个问题有两种方法。
第一个,正如eLRuLL所评论的,是实际执行JavaScript呈现。然而,硒可能比所需的要复杂。您可以尝试使用像PhantomJS或Splash这样的无头浏览器。这些无头浏览器将为您呈现JavaScript。这种方法比较容易实现,但对刮板的性能有一定的影响。
第二个选项实际上是刮取XHR请求的HTTP位置。在Firefox中,您可以使用Firebug扩展来过滤所有XHR请求并找到正确的请求。一般来说,这个选项给了我一个更好的性能,虽然它可以更复杂的实现。
https://stackoverflow.com/questions/40738264
复制相似问题