Scrapy Splash缺少元素

时间:2017-09-13 05:41:16

标签: python python-3.x xpath scrapy scrapy-splash

我已经写了一个蜘蛛来爬行boardgamegeek.com/browse/boardgame网站,以获取有关列表中桌面游戏的信息。

我的问题是,在我的代码中拉出两个特定的选择器时,并不总是会为这些选择器接收响应,有时它会返回一个选择器对象,而不是它。在调试期间检查响应后,代码中不存在动态加载的选择器。

我的两个违规行

bggspider.py    

bg['txt_cnt'] = response.xpath(
        selector_paths.SEL_TXT_REVIEWS).extract_first()
    bg['vid_cnt'] = response.xpath(
        selector_paths.SEL_VID_REVIEWS).extract_first()

选择器定义为

selector_paths.py

SEL_TXT_REVIEWS = '//div[@class="panel-inline-
links"]/a[contains(text(), "All Text Reviews")]/text()'
SEL_VID_REVIEWS = '//div[@class="panel-inline-
links"]/a[contains(text(), "All Video Reviews")]/text()'

在产生bg项目之后,在管道中处理属性以执行检查,因为许多桌面游戏对页面的各个部分的信息非常少。

pipelines.py

    if item['txt_cnt']:
        item['txt_cnt'] = int(re.findall('\d+', item['txt_cnt'])[0])
    else:
        item['txt_cnt'] = 0
    if item['vid_cnt']:
        item['vid_cnt'] = int(re.findall('\d+', item['vid_cnt'])[0])
    else:
        item['vid_cnt'] = 0

字段处理的目的只是获取字符串中的数值,这是一个桌面游戏的文本和视频评论的数量。

我假设我错过了一些与Splash有关的东西,因为我正在为一些/大多数查询获取选择器项目,但仍然缺少很多。 我在本地运行ScrapySplash docker容器,localhost:8050。

蜘蛛的代码可以在这里找到。 BGGSpider on Github

有关如何解决此问题或ScrapySplash如何工作的任何帮助或信息将不胜感激。

0 个答案:

没有答案