爬虫div下的中文怎么提取_某人知道我会一点Python爬虫之后……

bbc4040477292206e4cb94c1d297e161.png

源码链接:https://github.com/Paradoxical-whimsy/job_spider(建议用浏览器打开)文件内MAX_PAGE、area_list、position可根据需求修改。

下载教程:GitHub下载指南

某日在朋友圈炫耀了一下之前的豆瓣爬虫,某个好友看见之后找我帮忙爬一下前程无忧的数据,报酬是请我喝奶茶。作为乐于助人的我,Paradoxical怎么会坐视不理呢?¯ω¯还可以顺便挑战一下自己。于是Paradoxical询问了他的要求。

他的要求是获取若干个地区的某个职位的数据(公司、职位名、工资、职位介绍),但是只需要获取一定的页数,因为后面页数的职位相关度有些偏差……

哼哼,这么简单的要求,三下五除二就搞定了,就算不会也可以请教程序猿小哥哥¯ω¯。

那么先去前程无忧的网站看一下。在百度搜索后,点开链接。

491004b7f86aed04d30cb87bee69e057.png

看来是首页,没有什么东西,在搜索栏随便输入一下看看吧。

168529e3be8281f9290e554a88506739.png

嗯,出来了结果。再输入其他关键字试试。

43b4339cd09a1a1bdc7d34dc885aafc3.png

诶,这网址怎么这么像?观察了一下,只有一部分不同。

79b998ffcce9fbdf56de8b1d63f72b70.png

0d406c5b6e61561f0f268d1c1eaf9c6c.png

这可能就是关键字吧?但是为什么是这样的呢?于是Paradoxical去问一下惨绿青年小哥哥。

惨绿青年:这是url编码,因为url不能是中文,所以会自动把中文换成特定的编码后再传到服务器。

哦~原来是这样。那我试试把这串符号改成中文。

80038df8c8c800d2a50f8fdd92237b47.png
果然可以

这样这个位置就可以用关键字格式化了。那么页数会不会也在链接里?一试便知。

点击下一页按钮后这个位置变成了2,看来页数也在链接里。

ae354d180d85578ec3dd6e562559ac13.png

好了,接下来来看看地区会不会也在链接里。拉到页面上方,在地区里选择北京,看下链接有什么变化。

9e5718c2f125ffc44aeecf1bde6560fd.png

fbf6fa833b57ef0be7ffd514293d86ad.png

可以看到地点换成北京后,上图的红框位置也发生了变化,看来这个位置是地区的代码了。那么多个地区呢?

00cb06336f3fb474326dab27a6bdc215.png

可以看到上图上方的红框发生了变化,010000是北京的代码,020000是上海的代码,中间的%252C应该就是连接起来的符号,应该也是url编码吧。那再加个地区看一下是否符合猜测。

4ae997a3ffe3235c4bd09817ec92d5f7.png

看来没猜错,到时候用%252C把地区的代码连接起来再格式化网址就行了。emmm……那地区代码在哪里呢?试试按F12打开html代码看看吧。

48cccfd33342aa10aebbcabe4a888b62.png

可以看到em标签的data-value就是地区代码,由于Paradoxical能力有限,所以只能用selenium来获取了。用selenium控制浏览器打开选择地区的页面后再通过css选择器选择class为js_more的td标签下的em标签,再遍历获取它们的data-value属性和文本。丑陋的代码就不贴出来了,下面是获取的结果。

789f6f9e571cdf36dd41b9e6ed5a5eba.png

Paradoxical比较懒,只获取了热门地区的地区代码,要是好友需要再帮他添加上去吧¯ω¯。

测试一下能不能行吧。

3bec09f5d9038fe3ad1a4fc0da4a8ebd.png

页面是获取了,但是这里面的内容怎么乱七八糟的鸭?(#°Д°)于是又去请教小哥哥了。

惨绿青年:这是编码方式的不同而导致的,你加上一句“response.encoding = 'gbk'”就行了。

f6c674be2458f946d958bbfbe938cc98.png
解决了~

接下来可以获取数据了,先来观察一下网页吧~

318f8f227312f603a232f23789783e47.png

根据观察,点击标题就能进入对应的职位页面,a标签的链接后面部分是相同的,都是“.html?s=01&t=0”,可根据这点获取链接。

ff3582610997cf148d3c08771e9a18f1.png
数量没错,打印出来的结果也对,可以根据链接获取具体内容了。

爬虫的目标是获取公司名,工资和职位描述,这次决定用正则表达式来提取数据。

观察html后, 决定在下方html位置提取数据。

712d00a9ccb63d53d35c151b677f2add.png

454e720df86ff036decd326cd8e35cf7.png
成功提取

跟着提取职位名和工资。因为这两个数据挨得比较近,可以先获取整段的字符串,再精确捕获需要的数据。

13c2bf0dc8da9542a75632abb3fa5183.png

49aa4aee80382337f8074929e80a5fcc.png

最后就是职位描述了,可以看到职位描述由一个div标签里的多个p标签组成,先获取整个div标签,然后获取里面的每一个p标签里的内容,最后拼接起来。获取的结果有一些不需要的字符,把它们去掉即可。

3734733ff24746e22af283e4fae895df.png

f466db435602227c148babc07afdd21d.png

终于提取完了,最后整理一下代码,加个循环遍历所有的职位链接,再加个保存文件的代码。QAQ

经过测试,某些职位描述不在p标签里,所以加了个判断。

9b5c0d9e4ed9f7fd54fff3453c3cbe1a.png

把数据保存为csv文件,这样就可以用excel打开了。

eefe53ebb7777b834ae9319289240455.png
最终成果

终于完成了这个任务,非常感谢惨绿青年小哥哥不厌其烦地回答我的问题以及教导我。现在我心里的喜悦难以言喻,得到的不只是奶茶,还有成长的滋味。

今天也学到了很多东西呢,明天有什么新知识呢?真期待鸭~如果喜欢文章可以关注我哦~

6025275f78299fe7604f0b8d07dad539.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值