青松100 发表于 2020-11-14 16:15:18

爬取BOSS的岗位名称和详情页的岗位描述

我在跟某个爬虫视频抄 如何 用scrapy 爬取 boss招聘网站 的岗位名称 和 职位描述。这个网站好象更新了,所以视频中老师的部分代码失效了。里面有一些xpath的路径,我做了修改。但是不知为啥,爬出来什么东西也没有,也没报错。

求求路过的大神,帮忙看看,我都检查了一天,也不知哪出错了。下面是源码,我把整个工程也打包上传到百度网盘了。
#16行,是爬取 岗位名称
#10行,是爬取 岗位描述
#18行,是岗位描述的详情页

这只是半成品,我是一边看视频,一边打的。

重点是 #10, #14 #18行的 XPATH 这几个我和视频老师的源码不一样,其它都是抄他的。


import scrapy


class BossSpider(scrapy.Spider):
    name = 'boss'
    #allowed_domains = ['www.xxx.com']
    start_urls = ['https://www.zhipin.com/job_detail/?query=python&city=101010100&industry=&position=']
   
    def parse_detail(self,response):
      job_desc = response.xpath('//*[@id="main"]/div/div/div/div/div/div//text()').extract()
      job_desc = ''.join(job_desc)
      print(job_desc)
    def parse(self, response):
      li_list = response.xpath('//*[@id="main"]/div/div/ul/li')
      for li in li_list:
            job_name = li.xpath('.//div[@class="job-title"]/span/a/text()').extract_first()
            print(job_name)
            detail_url = 'https://www.zhipin.com'+li.xpath('.//div[@class="job-title"]/span/a/@href').extract_first()
            yield scrapy.Request(detail_url, callback=self.parse_detail)   
   



链接:https://pan.baidu.com/s/1G8eztmNmZD72RxBMgz-axQ
提取码:1234

YunGuo 发表于 2020-11-15 14:17:55

BOOS做了cookie反爬,设置一下cookie。

青松100 发表于 2020-11-15 16:35:19

YunGuo 发表于 2020-11-15 14:17
BOOS做了cookie反爬,设置一下cookie。

感谢大神指点。我做一些截图,麻烦您看看对不对?

1. 我在设置里面把cookie启用了, 去爬,还是啥结果也没有。

这是我百度到的方法。如果设为False就用默认的;如果设为True,是用自定义的方法。我想用默认的,这样对吗?


2. 我百度一些网友在爬BOSS里,被封掉,有大神说要加sleep。我这么设置,对不?

YunGuo 发表于 2020-11-15 17:44:12

最简单的,你直接复制浏览器的cookie到setting里面的DEFAULT_REQUEST_HEADERS就行了。
请求频率太高怕封ip,可以在setting里面开启DOWNLOAD_DELAY限制爬虫爬取速度,这个参数值单位是秒。

青松100 发表于 2020-11-15 20:04:02

本帖最后由 青松100 于 2020-11-15 20:06 编辑

YunGuo 发表于 2020-11-15 17:44
最简单的,你直接复制浏览器的cookie到setting里面的DEFAULT_REQUEST_HEADERS就行了。
请求频率太高怕封ip ...

大神,我按您的指导去更改了。总算有进步了,但是出错了。求求您再拉小白。

我把我的代码和视频老师的代码进行核对,也没发现哪里写错了。
也百度了UNEXPECTED EOF WHILE PARSING 可是也没百度出应该要咋做。这个错误提示上面有一个^ 应该是出错的地方,可是我不知它在哪呀。





YunGuo 发表于 2020-11-16 00:05:12

从你的截图来看,你的DEFAULT_REQUEST_HEADERS有个花括号是注释的状态,看看是不是少一个花括号的原因。

青松100 发表于 2020-11-16 14:26:44

YunGuo 发表于 2020-11-16 00:05
从你的截图来看,你的DEFAULT_REQUEST_HEADERS有个花括号是注释的状态,看看是不是少一个花括号的原因。

大佬,现在修改好了。又和以前的一样,什么报错也没有,但是啥也没输入。希望好人做到底。不要求您时时回复,有空帮我看看,小白感激不尽。


YunGuo 发表于 2020-11-16 16:32:13

青松100 发表于 2020-11-16 14:26
大佬,现在修改好了。又和以前的一样,什么报错也没有,但是啥也没输入。希望好人做到底。不要求您时时回 ...

把所有代码发来看看。

青松100 发表于 2020-11-16 17:11:02

本帖最后由 青松100 于 2020-11-16 17:21 编辑

YunGuo 发表于 2020-11-16 16:32
把所有代码发来看看。

大神,这个网站网页只要有URL 都要审核的---一般时间都要一天以上, SETTING有一大堆默认的URL。 我把所有的代码都上传到百度网盘,可以吗?


没有想到百度网盘的URL,本论坛不要审核,太好了。

百度网盘地址如下。

青松100 发表于 2020-11-16 17:18:17

链接:https://pan.baidu.com/s/1u5Tzs4Hj8ryb4lBNrUPfAw
提取码:1234


不二如是 发表于 2020-11-16 17:27:17

放出来了吗?

青松100 发表于 2020-11-16 17:29:39

不二如是 发表于 2020-11-16 17:27
放出来了吗?

谢谢不二老师。放出来了

YunGuo 发表于 2020-11-16 23:58:58

看了下你的代码。代码运行没问题啊,有时候会得不到结果,是因为cookie失效了。影响页面响应内容的是这个cookie参数zp_stoken,如果你不懂js,自己可能没办法逆向js生成cookie参数。你可以百度,看看其他人的逆向分析。

青松100 发表于 2020-11-17 06:36:47

YunGuo 发表于 2020-11-16 23:58
看了下你的代码。代码运行没问题啊,有时候会得不到结果,是因为cookie失效了。影响页面响应内容的是这个co ...

我也猜到会不会是cookie失效了,我后来又自己找了一个cookie放进去,但是还是跑不了。

我之前这过一点前端包括JS,不过都忘了。

我现在改变学习方法了,如果跑不动的话,先把视频中老师讲解的知识点一个个记下来,以后再找最新的教学视频去学和练。S

万分感谢您这么多次无私的帮助,也给我指出一个方向了。
页: [1]
查看完整版本: 爬取BOSS的岗位名称和详情页的岗位描述