为了账号安全,请及时绑定邮箱和手机立即绑定

Scrapy 没有返回结果

Scrapy 没有返回结果

慕码人8056858 2021-11-09 17:05:00
    我是scrapy的新手。我正在尝试为我正在从事的项目抓取 Indeed 的工作网站。我正在慢慢学习如何使用谷歌浏览器检查抓取的语法,然后点击 control-f。我跟着本教程:https://www.digitalocean.com/community/tutorials/how-to-crawl-a-web-page-with-scrapy-and-python-3我基本上无法获得每页 16 个列表。我可以看到它通常以“//span[@class="company"]/a/text()到目前为止,这是我的代码:import scrapyclass IndeedSpider(scrapy.Spider):    name='indeed_jobs'    start_urls = ['https://www.indeed.com/jobs?q=software%20engineer&l=Portland%2C%20OR']    def parse(self, response):        SET_SELECTOR = '.jobsearch-SerpJobCard'        for jobListing in response.css(SET_SELECTOR):            pass这没有任何回报。我希望有 16 行,所以我的 SET_SELECTOR 不正确。帮助将不胜感激!
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您的选择器工作正常。SET_SELECTOR不过,它不是 Scrapy 特定的变量。您可以随意调用它,甚至可以将选择器字符串直接放在函数调用中。这也不是什么都不返回的原因。


它什么都不返回,因为你没有指示它返回任何东西。在您当前的代码中,它将找到每个作业部分(在for循环中),但随后您告诉它什么都不做 ( pass)。


以下是它为每个工作获取公司的示例:


import scrapy


class IndeedSpider(scrapy.Spider):

    name='indeed_jobs'

    start_urls = ['https://www.indeed.com/jobs?q=software%20engineer&l=Portland%2C%20OR']


    def parse(self, response):

        SET_SELECTOR = '.jobsearch-SerpJobCard'

        for jobListing in response.css(SET_SELECTOR):

            # Yield is necessary to return scraped data.

            yield {

                # And here you get a value from each job.

                'company': jobListing.xpath('.//span[@class="company"]/a/text()').get('').strip()

            }

注意.//在 XPath 开头的使用。原因在文档中。而且我还为缺少该字段(docs)添加了一个默认值'',这样就不会引发错误。get()strip()


但是,我建议您先阅读官方 Scrapy 教程,因为您缺少的部分将在此处进行说明:https ://docs.scrapy.org/en/latest/intro/tutorial.html


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 354 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信