我想做的是从 stackoverflow 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
我可以使用此命令将标题单独提取到 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&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()
好处是,您可以嵌套 XPath
。第一个 XPath
生成一个包含 Selectors
的列表。请注意内部语句开头的点
。这意味着这个陈述是相对于第一个陈述的!
关于python - 使用 scrapy 进行网页抓取。如何为数字定义 xpath 通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408061/