选择器是:
第一个月
页面为this和that。
第一个返回正确的 span,但是第二个不返回任何东西。
我能看到的唯一相关差异是第二页有一个 span,varpb 类出现在代码的不同部分,但它与我想要的另一个相同。在第二页源代码的第581行:
...
<a class="--link" href="/putear"><span class="varpt">putear</span><span class="varpb">putear</span></a><span class="mx-2" style="color:#888888;">]</span></item> ou
...
字符串
即使它没有得到“正确的”* 跨度 *,它不应该得到这一个吗?我错过了什么?
为了澄清这一点:我不关心使它工作(通过其他方式;改变选择器),我想了解为什么它不,请。
如果任何一个说葡萄牙语的人想知道我为什么要刮这些单词,那是为了玩拼字游戏。
编辑:
感谢 Alexandria 的回答和this other question,我意识到scrappy并没有抓取我期望的HTML代码,而是一个“不完整”的版本。我不能确认这一点,因为我没有亲眼看到这一点(由于对代码的理解不足;抱歉),但显然这是由于页面进行的Ajax调用。
1条答案
按热度按时间rqqzpn5f1#
对于第一页--> this。你得到的结果
<span class="varpb">putear</span>
,我相信这是你期望从你的问题中的例子得到的。这是唯一的结果,因为它是唯一的span
le对于第二页--> that,你什么也得不到,因为没有类为
varpb
的span
元素是类为dp-conteudo__esquerda
的div
元素的后代。这两个类的元素都存在,但它们不存在于元素树的那个分支中。编辑
看来问题是你没有看到你所指的页面的实际源html。
一种确保你看到的是scrappy解析的html内容的方法是保存
response.text
到本地的html文件中,并亲自检查它,这样可以确保你看到的html和scrappy看到的一样。或者,如果你想在浏览器中查看scrapy看到的html,你可以在scrapy shell中使用
view(response)
。字符串
下面是一个如何使用scrapy shell的例子:
型