【发布时间】:2015-10-03 04:11:59
【问题描述】:
我正在尝试从stackoverflow careers subsection 中获取不同就业机会的名称。
我想要的元素的 xpath,根据我的 chrome 插件,它神奇地告诉你所选元素的 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 中让它们在后面出现换行符?
【问题讨论】:
-
//*[@id="content"]/div[1]/div[1]/div[2]/div[1]/div/h3/a -
甚至
//*[@id="content"]//div/h3/a -
甚至
//*[@id="content"]//h3/a