Css 抓取正则表达式匹配的兄弟元素

Css 抓取正则表达式匹配的兄弟元素,css,scrapy,Css,Scrapy,我用Scrapy从大学网站上搜集大学论文主题。我知道如何使用正则表达式匹配关键字,但我真正想要的信息是匹配所在div中的其他元素。Scrapy中的Response.css(…).re(…)函数返回一个字符串。有没有办法导航到正则表达式匹配的父div 示例:。在上面的页面上,我可以使用:response.css(“*::text”).re(“文章主题”)匹配文章主题h1。然而,我想不出一个方法来抓取同一分区中主题a和主题N下的两个实际论文主题。这不是正确的方法。你应该使用下面的方法 respons

我用Scrapy从大学网站上搜集大学论文主题。我知道如何使用正则表达式匹配关键字,但我真正想要的信息是匹配所在div中的其他元素。Scrapy中的Response.css(…).re(…)函数返回一个字符串。有没有办法导航到正则表达式匹配的父div


示例:。在上面的页面上,我可以使用:response.css(“*::text”).re(“文章主题”)匹配文章主题h1。然而,我想不出一个方法来抓取同一分区中主题a和主题N下的两个实际论文主题。

这不是正确的方法。你应该使用下面的方法

response.xpath("//div[@id='freshman-admission-essay-topics']//h5//text()").extract()
如果您只需要css,那么您可以使用

In [7]: response.css("#freshman-admission-essay-topics h5::text, #freshman-admission-essay-topics h5 span::text").extract()
Out[7]: ['Topic A \xa0\xa0', 'Topic N']

谢谢你的观点。我理解您的布局方式,但我希望有一种更通用的解析方法,这样我就可以使用相同的方案刮取多个站点。没有办法做类似于soup的事情。在beautiful soup中查找_all(href=re.compile(“elsie”)#[“id=”link1“>elsie],在那里你可以得到标签而不是字符串匹配?它怎么可以是通用的,同时提取特定的内容?假设我想提取与正则表达式“文章主题”在同一个div中的所有Li。如果re.compile没有返回字符串,而是返回html元素本身,我就可以这样做。没有办法吗?您仍然需要使用xpath本身。类似于
response.xpath(//li[contains(text(),'assessment Topics')]/..//text()”)的内容。extract()
太好了!非常感谢。既然我更习惯使用CSS,那么我是否也可以用CSS来实现这一点?