尝试使用python / scrapy提取数据,但无法找到正确的xpath

时间:2019-04-22 04:08:36

标签: python xpath web-scraping scrapy

我想抓取该网站。

https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab

我要提取

  • 标题
  • 位置
  • 公司

职位发布

我尝试了几个xpath作为位置,公司和标题,但没有任何作用。我也尝试将其写入CSV文件。所有位置,公司和标题都为空白。我认为我的xpath不正确

A

任何人都可以通过标题,公司和位置的xpath帮助我。 import scrapy class JobItem(scrapy.Item): # Data structure to store the title, company name and location of the job title = scrapy.Field() company = scrapy.Field() location = scrapy.Field() class stackoverflow(scrapy.Spider): name = 'stack_bot' start_urls = ['https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab'] def parse(self, response): for a_el in response.xpath('//div[@class="listResults"]'): section = JobItem() section['title'] = ? section['company'] = ? section['location'] = ? yield section 也是正确的。

2 个答案:

答案 0 :(得分:0)

我不确定xpath('//div[@class="listResults"]')是否正确。它仅给出一个元素。这是我的代码版本:

def parse(self, response):
    for a_el in response.xpath('//div[contains(@class, "-job-summary")]'):
        section = JobItem()
        section['title']   = a_el.css('h2 a::text').get()
        section['company'] = a_el.xpath('.//div[contains(@class, "-company")]/span[1]/text()').get()
        section['location'] = a_el.xpath('.//div[contains(@class, "-company")]/span[2]/text()').get()
        yield section

答案 1 :(得分:0)

考虑使用RSS feed作为源,因为随着时间的推移,它会变得更强大

https://stackoverflow.com/jobs/feed

然后,您可以使用以下CSS选择器来生成可以一起列出(zip())的列表

标题选择器:item title

公司选择器:a10\:author

位置:location