我正在使用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")]'))
有什么我想念的吗?
答案 0 :(得分:-1)
这很可能是因为该网站使用了javascript。您可能需要使用Splash模拟点击来导航和返回预渲染的网站。这是一个不错的起点:
https://docs.scrapy.org/en/latest/topics/dynamic-content.html