带有svg元素的“ Scrapy LinkExtractor”作为“下一步”按钮

时间:2019-04-30 10:39:25

标签: scrapy

我正在使用CrawlSpider,它使用如下链接提取来递归地跟踪调用下一页的链接:

rules = (Rule(LinkExtractor(
               allow=(),\
               restrict_xpaths=('//a[contains(.,"anextpage")]')),\
               callback='parse_method',\
               follow=True),
        )

我已应用此策略来递归地爬网不同的网站,并且只要html标签中的文本(例如<a href="somelink">sometext</a>)一切正常。

我现在正在尝试抓取具有

的网站

<div class="bui-pagination__item bui-pagination__next-arrow"> <a class="pagenext" href="/url.html" aria-label="Pagina successiva"> <svg class="bk-icon -iconset-navarrow_right bui-pagination__icon" height="18" role="presentation" width="18" viewBox="0 0 128 128"> <path d="M54.3 96a4 4 0 0 1-2.8-6.8L76.7 64 51.5 38.8a4 4 0 0 1 5.7-5.6L88 64 57.2 94.8a4 4 0 0 1-2.9 1.2z"></path> </svg> </a> </div>

作为“下一个”按钮,而不是简单的文本,并且我的LinkExtractor规则似乎不再适用,并且蜘蛛网在第一页之后停止。

我尝试寻找svg元素,但这似乎不会触发提取:

restrict_xpaths=('//a[contains(.,name()=svg) and contains(@class,"nextpageclass")]'))

有什么我想念的吗?

1 个答案:

答案 0 :(得分:-1)

这很可能是因为该网站使用了javascript。您可能需要使用Splash模拟点击来导航和返回预渲染的网站。这是一个不错的起点:

https://docs.scrapy.org/en/latest/topics/dynamic-content.html