使用 scrapy 进行网页抓取。如何为数字定义 xpath 通配符?

web scraping with scrapy. how to define an xpath wildcard for numbers?

我想做的是从 Whosebug careers subsection 中获取不同就业机会的名称。

根据我的 chrome 插件,我想要的元素的 xpath 神奇地告诉您所选元素的 xpath,如下所示:

//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div[1]/h3/a

//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div[2]/h3/a

//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div[3]/h3/a

//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div[4]/h3/a

我可以使用此命令将 div 中的标题提取到 scrapy shell:

response.xpath('//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div[4]/h3/a').extract()

依此类推,通过切换最后一个div[]元素的编号。

我的问题是,如何制作一个通用命令来提取页面上的所有标题?

我在 w3schools 上查看了有关 xpath 语法的内容,但我没有看到任何有关数字通配符的内容,是这样的事情吗?这是提取所有不同工作名称的合理方法吗?

html 看起来像这样:

[u'<a class='job-link' href='/jobs/92881/software-engineer-java-m-w-advitec-informatik-gmbh?a=v9gjNYx3zGg&amp;so=i' title='Software Engineer JAVA (m/w)'>Software Engineer JAVA (m/w)</a>']

这不是完全没用,我可以使用它,然后用 jsoup 或其他东西进一步提取它,但我需要它来处理所有作业,而不仅仅是一个,你知道吗?

另外...在 scrapy shell 中有没有办法让它们在后面显示一个换行符?

像这样循环标题:

xpath_jobs_sel = './/div[contains(@class,"listResults")]//a[@class="job-link"]'
for sel in response.xpath(xpath_jobs_sel):
    title = sel.xpath('./@title').extract()

好处是,你可以嵌套XPaths。第一个 XPath 产生一个带有 Selectors 的列表。注意内部语句开头的 dot 。意思是这个语句是相对于第一个的!