Python-使用Scrapy抓取网页并满足Javascript

时间:2017-08-17 01:58:11

标签: javascript python scrapy web-crawler

我正在尝试使用Scrapy抓取以下链接下的网页。 http://nc.mofcom.gov.cn/channel/qytc2017/list.shtml?p_index=210000 当我试图爬下一页时, nc.mofcom.gov.cn/channel/qytc2017/list.shtml?p_index=210000&page=2  我发现下一页的href是用Javascript编写的。 首先,我尝试使用下面的代码找到所有可能的。

    def parse_item(self, response):
    for pageNum in range(1, 10):
        new_url = response.url + "&page=%d" % pageNum
        yield Request(new_url, callback=self.parse_detailpage)

因为只有子页面而且它不会例外;但是,我发现了这一点 nc.mofcom.gov.cn/channel/qytc2017/list.shtml?p_index=210000&page=7和nc.mofcom.gov.cn/channel/qytc2017/list.shtml?p_index=210000&page=6分享相同的内容content.Indeed,我还注意到一些页面有超过10个子页面,我无法继续抓取。任何人都可以给我一些想法吗?我没有10个声望,我可以提供超过1个链接和图像,我真的很抱歉。我真的很感激,如果有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用Splash使用JavaScript呈现网页。 Splash通过scrapy-splash与Scrapy无缝集成。

另一种方法是解析包含有关分页信息的脚本。该脚本包含存在的页数:

var v_PageCount = 6;

您可以使用Scrapy提取脚本内容,然后使用例如js2xml库来提取此页面计数。