2024-06-26 05:01:12 发布
网友
我试图选择一个分区中的所有表,它的xpath类似于//*[@id="mw-content-text"]/table[@class="wikitable sortable jquery-tablesorter"]。但是选择器不返回任何值。我怎样才能通过那些在id/class中有空格的标签?在
//*[@id="mw-content-text"]/table[@class="wikitable sortable jquery-tablesorter"]
我也遇到了同样的问题,因为我正试图从维基百科上搜刮网页。该表的类名显示为"wikitable sortable jquery-tablesorter",因为另一个答案中提到的插件在使用后会添加到类名中。在
"wikitable sortable jquery-tablesorter"
为了获取该表,您只需查找下面的类"wikitable sortable"。这帮我找到了密码。在
"wikitable sortable"
我不能确切地说是什么问题,因为我没有您要解析的源数据。如果你把最小的部分粘贴起来会很有帮助。在
但无论如何,你有不止一个选择来实现这一点。我建议将CSS选择器与XPath选择器结合使用,如下所示:
response.xpath("//*[@id='mw-content-text']").css("table.wikitable.sortable.jquery-tablesorter")
但是如果只想使用XPath,可以使用contains():
但这可能会很棘手,因为它要求表类定义得一模一样,它不允许类的不同顺序。如果你想报道这些案件,我建议你这样使用:
response.xpath("//*[@id='mw-content-text']/table[contains(@class,'wikitable') and contains(@class, 'sortable') and contains(@class, 'jquery-tablesorter')]")
您可以找到更多关于废选择器in the official documentation的信息。在
编辑: 正如Rahul所注意到的,这里的问题是类jquery-tablesorter实际上是由jQuerytablesorter插件动态添加的,因此这个类在scrapy响应中不可见,因为还没有执行JS。要在解决方案中反映这一点,不应在选择器表达式中包含jquery-tablesorter。在
jquery-tablesorter
我也遇到了同样的问题,因为我正试图从维基百科上搜刮网页。该表的类名显示为
"wikitable sortable jquery-tablesorter"
,因为另一个答案中提到的插件在使用后会添加到类名中。在为了获取该表,您只需查找下面的类
"wikitable sortable"
。这帮我找到了密码。在我不能确切地说是什么问题,因为我没有您要解析的源数据。如果你把最小的部分粘贴起来会很有帮助。在
但无论如何,你有不止一个选择来实现这一点。我建议将CSS选择器与XPath选择器结合使用,如下所示:
但是如果只想使用XPath,可以使用contains():
^{pr2}$但这可能会很棘手,因为它要求表类定义得一模一样,它不允许类的不同顺序。如果你想报道这些案件,我建议你这样使用:
您可以找到更多关于废选择器in the official documentation的信息。在
编辑:
正如Rahul所注意到的,这里的问题是类
jquery-tablesorter
实际上是由jQuerytablesorter插件动态添加的,因此这个类在scrapy响应中不可见,因为还没有执行JS。要在解决方案中反映这一点,不应在选择器表达式中包含jquery-tablesorter
。在相关问题 更多 >
编程相关推荐