繁体   English   中英

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

[英]Trying to extract data using python/scrapy and not able to find the correct xpath

我想刮掉网站。

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

我想提取

  • 标题
  • 位置
  • 公司

的职位发布。

我尝试了几个xpath的位置,公司和标题,没有任何工作。 我还尝试将其写入CSV文件。 所有位置,公司和标题都是空白。 我认为我的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

任何人都可以帮我找到标题,公司和位置的xpath。 xpath('//div[@class="listResults"]')也是正确的。

我不确定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

考虑使用RSS提要作为源,因为随着时间的推移这将更加健壮

https://stackoverflow.com/jobs/feed

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

标题选择器: item title

公司选择: a10\\:author

位置: location

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM