拉勾网爬取小结

作者: 只是不在意 | 来源:发表于2017-06-02 17:52 被阅读0次

本文获得的知识点:

json包的摘取,不显示页码的加载,post和get的区别;
面对反爬虫机制,多个浏览器爬取;
读取cvs文件

想找本市内一些拉勾网的大咖公司地址,思路如下:

  1. 找到拉勾网月薪在某个地域某个数值以上的发布信息,抽取公司
  2. 利用公司id找到地址

另外还有一个办法就是先找公司id,再找职位,然后进行薪酬筛选,但这样会遇到很多空值,而且拉勾网的公司id并不是按照城市分布,所以pass。


首先是用搜索找到公司,然后爬取公司ID。休假几天,手艺就不灵了,一点点东西慢慢的抠。本来想用bs4爬,拖拖拉拉的也爬不到,只好上群里问,所以然后几个大神就以光速把公司id的json包甩出来了...
泪,延迟5秒好不好.....这种速度很伤小白自尊的...
总之还是要好好学习抓包工具...

22.png

然后就是解析json文件,当然是用json.loads。至于字典里面的结构,拉勾网略复杂,不过这个也不用重新发明轮子,革命先辈们已经有无数经验了。
参考文章:
Python爬虫-爬拉勾网 by 靠谱叔
python爬虫-爬取拉钩职位-单线程 by Mr_Cxy

3.png 图片.png

这里有两个地方要注意:

  1. 请求url的时候是post,不是get,所以把post字典的几个参数,first,pn提交。(可以在上图的headers里看到)first值为true,pn是页数。如果不提交参数,那么就只能爬到第一页。——拉勾网的网页是不显示页码加载的
def get_company_id(page):
    url = 'https://www.lagou.com/jobs/positionAjax.json?*****'(根据搜索不同)
    html = requests.post(url, headers=get_headers(),data = {'first':'true','pn':{page}}).content#page写入一个循环
    infos1=json.loads(html)
    infos=infos1['content']['positionResult']['result']#按照字典结构一层层的选下来
    list_Id=[]#如果不做列表和循环,每页就只记录第一个id
    for item in infos:
        companyId=item['companyId']
        print(companyId)
        list_Id.append(companyId)
    return list_Id

记得摘取字典的时候一定要加循环,就算只是试一个也要加,不要偷懒,不然会出来一堆怪东西。


  1. 因为拉勾网的反爬虫机制很厉害,所以很容易被ban,这里yaung大神给了我一堆浏览器,感觉可以用一百年了...然后随机选取就好了。
ua_list=[
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
      ]

def get_headers():
    temp_headers = {
        'Host':'www.lagou.com',
        'Origin':'https://www.lagou.com'
    }
    user_agent = random.choice(ua_list)
    temp_headers = {'User-Agent': user_agent}
    return temp_headers

  1. 然后就是把id放入cvs,再从cvs读取。(因为这里我是分两天做的,所以做了两个py文件)
import os
os.chdir('F:')
company_list = csv.reader(open('lagou.csv', encoding='utf-8'))
for i in company_list:
    print(i)
    url='https://www.lagou.com/gongsi/'+str(i[0])+'.html'

开始读取的id(i)总是拼不进url,后来程工提醒,从cvs读取的数值,就算一行只有一个,也是列表格式,所以要加入索引,再转变为字符串格式。
拉勾网的结构很啰嗦,层层叠叠的,xpath也不太好取,试了几次,换成bs完成。

感觉这个功课还是挺难的,不知道是自己旅行回来变笨了,还是敌人太狡猾(拉勾网的反爬机制)。总之也算完成了,继续撒花!

下一步计划:
完成拉勾网数据分析
好好学习抓包工具charles。(一定要学了!)

相关文章

  • 拉勾网爬取小结

    本文获得的知识点: json包的摘取,不显示页码的加载,post和get的区别;面对反爬虫机制,多个浏览器爬取;读...

  • Selenium小例子

    爬取腾讯动漫 爬取某网站漫画 爬取拉勾网

  • 爬取拉勾网

    拉勾网数据加载的方式使用的是ajax异步加载的方式从后端加载数据,所以就需要分析加载的URL,如果有疑问可以看我的...

  • selenium爬取拉勾网

  • 拉勾网前端职位数据分析(Excel,Python工具)

    一、使用scrpy爬取拉勾网(厦门地区)前端职位数据数据爬取过程可以参考慕课网教程。 使用Excel数据透视表(样...

  • 2019-02-21

    python爬取拉勾搜索内容出现操作太频繁的返回结果 看到一个群里有人在问爬取拉勾网不成功,出现操作太频繁的回复,...

  • 区块链招聘信息爬取与分析

    最近在研究区块链,闲来无事抓取了拉勾网上450条区块链相关的招聘信息。过程及结果如下。 拉勾网爬取 首先是从拉勾网...

  • 爬虫—拉钩网招聘岗位爬取

    爬取拉勾网各类招聘岗位,爬取不同的岗位种类只需要初始化时候传入参数不同,爬取成功后会自动写入同目录的csv文件中,...

  • 拉勾网职位信息爬取

    分析网页 通过浏览器查看网页源代码,未能找到职位信息,因此需要打开F12开发者工具抓包分析职位数据使怎样被加载到网...

  • 数据分析师薪酬?拉勾网职位爬取+分析

    ——2018.06.01——最近几天看到了很多文章写拉勾网职位爬取,那些基本是基于requests + json,...

网友评论

    本文标题:拉勾网爬取小结

    本文链接:https://www.haomeiwen.com/subject/omoefxtx.html