(转)Scrapy实战之获取腾讯招聘信

Scrapy实战之获取腾讯招聘信

 

每年7月都有人毕业,每年7月都有人离开学校走上工作岗位。

或是为了混口饭吃,或是为了祖国繁荣富强,他们从学校散布到世界各地,像蒲公英般飘落到各行各业,默默地为祖国散发着光和热。

当然也有人还在四处投递简历,寻找工作,忙的焦头烂额。

莫慌!小叮当这就带你使用Scrapy爬取海量腾讯招聘信息。

Scrapy实战获取腾讯招聘信息

(1)分析目标网页

由于在”小叮当高级爬虫(三):scrapy shell命令行模式“中已经分析过目标网页,且测试了提取数据的xpath表达式,这里就不再赘述。

(2)创建scrapy项目

在cmd窗口中输入命令:scrapy startproject tencent_recruit 创建一个名为tencent_recruit的scrapy项目。

在tecent_recruit文件夹下找到spiders文件夹,在此处打开cmd窗口输入命令:scrapy genspider catch_positon tencent.com 创建名为“catch_positon"的爬虫文件。

(3)明确爬取目标

我们在pycharm中打开刚才创建好的"tencent_recruit"项目。使用“Alt+1"组合键打开项目视图,找到items.py文件,双击进入。

根据目标网页,我们来确定爬取的目标为“职位名称”、“职位详情连接”、“职位类型”、“招聘人数”、“工作地点”、“发布时间”。

据此,我们来编写“items.py”确定爬取目标。

(4)编写爬虫文件

双击我们创建好的“catch_positon.py”,来编写爬虫文件。

首先更改“start_urls"字段值为我们的目标网址。

在”settings.py"中将第22行(pycharm中为第22行,不同编辑器可能行数不同)的“ROBOTSTXT_OBEY”协议前加“#“进行注释。

将第19行(pycharm中为第19行,不同编辑器可能行数不同)的”USER_AGENT“前的”#“注释去掉,将其值改为浏览器中用F12看到的值。

我们根据上次在“小叮当高级爬虫(三):scrapy shell命令行模式”中测试过的xpath来编写爬虫文件。

在cmd命令行中输入:scrapy crawl catch_positon运行爬虫进行测试。

和网址上的信息对比后,发现我们已经成功提取到数据,测试成功。

可见我们提取到的每行数据列表中只有1个数据,因此我们使用”extract_first()"表示取第一个元素。

注意:"extract()[0]"和“extract_first()"均可取到第一个元素,一旦没有数据时,”extract()[0]“会报错小标范围溢出终止程序运行,而“extract_first()"则会直接返回”null"表示空值,不会打断程序运行,因此,我们在取第一个元素时,我们常用”extract_first()"。

我们导入相应的item类:from tencent_recruit.items import TencentRecruitItem

将item类实例化,将相应数据赋值给相应的item中。

在cmd命令行中输入:scrapy crawl catch_positon 运行爬虫进行测试。

可见,我们已经成功提取了“腾讯招聘”网的第一页数据。下面,我们来分析网页,爬取全部招聘信息。

我们按下F12,点击选择元素,选中“下一页”,便可以看到浏览器为我们自动定位的相应网页代码。

我们点击代码中对应的a标签链接,发现直接就来到了第二页。

我们根据这个规律,便可得出爬取全部招聘信息的思路:提取每一页的“下一页链接”,

提取网页数据,

根据“基础网址”和“下一页链接”构造出新的访问请求。

(5)编写管道文件,存储数据

双击“pipelines.py",进入管道文件,进行编写。

为将我们的数据存储为json格式,使用命令”import json"导入json包。

定义打开爬虫函数“open_spider”在执行爬虫时创建对应的数据存储文件。

定义“process_item”函数,将返回给管道的item数据存储为json格式。

定义关闭爬虫函数“close_spider”,在爬虫结束时关闭文件。

最后,到“settings.py"中注册管道,找到67行(pycharm中为第67行,不同编辑器可能行数不同),将

“ITEM_PIPELINES”对应部分的“#”注释去掉。

在cmd命令行中输入:scrapy crawl catch_positon 运行爬虫,爬取全部腾讯招聘信息。

我们可以看到数据一直在被抓取。大约两分钟后,程序运行结束。我们可以看到,在spiders文件夹下多了一个我们用管道文件创建的“tencent_recruit.json"文件。

我们双击”tencent_recruit.json“文件打开,用鼠标将滚动条拉倒最后,可以看到我们共抓取了3706条数据。和腾讯招聘官网上的总职位数3706相符。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值