很多网站需要通过提交表单来进行登陆或相应的操作,可以用requests库的POST方法,通过观测表单源代码和逆向工程来填写表单获取网页信息。本代码以获取拉勾网Python相关招聘职位为例作为练习。打开拉钩网,F12进入浏览器开发者工具,可以发现网站使用了Ajax,点击Network选项卡,选中XHR项,在Header中可以看到请求的网址,Response中可以看到返回的信息为Json格式。这里由于Json字符串比较长且复杂,所以可以用Preview选项观察,正好是网页中的职位信息。招聘信息全在content-posiotionResult-result中。翻页后发现请求地址没有改变,但是提交方法为POST,提交的字段中有一个pn字段随着翻页在改变,因此,可以据此构造出爬虫程序。代码如下:

import requests
import json
import time
import pymongoclient = pymongo.MongoClient('localhost',27017)
mydb = client['mydb']
lagou = mydb['lagou']cookie = '这里换成你自己的cookie'headers = {'cookie': cookie,'origin': "https://www.lagou.com",'x-anit-forge-code': "0",'accept-encoding': "gzip, deflate, br",'accept-language': "zh-CN,zh;q=0.8,",'user-agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",'content-type': "application/x-www-form-urlencoded; charset=UTF-8",'accept': "application/json, text/javascript, */*; q=0.01",'referer': "https://www.lagou.com/jobs/list_Pyhon?labelWords=&fromSearch=true&suginput=",'x-requested-with': "XMLHttpRequest",'connection': "keep-alive",'x-anit-forge-token': "None"}def get_page(url, params):html = requests.post(url,data=params,headers=headers)json_data = json.loads(html.text)total_count = json_data['content']['positionResult']['totalCount']page_number = int(total_count/15) if int(total_count/15)<30 else 30get_info(url,page_number)def get_info(url,page):for pn in range(1,page+1):params={'first':'true','pn':str(pn),'kd':'Python'}try:html = requests.post(url,data=params,headers=headers)json_data = json.loads(html.text)results = json_data['content']['positionResult']['result']for result in results:infos = {'businessZones':result['businessZones'],'city': result['city'],'companyFullName': result['companyFullName'],'companyLabelList': result['companyLabelList'],'companySize': result['companySize'],'district': result['district'],'education': result['education'],'financeStage': result['financeStage'],'firstType': result['firstType'],'formatCreateTime': result['formatCreateTime'],'gradeDescription': result['gradeDescription'],'imState': result['imState'],'industryField': result['industryField'],'positionAdvantage': result['positionAdvantage'],'salary': result['salary'],'workYear': result['workYear'],}lagou.insert_one(infos)time.sleep(2)except requests.exceptions.ConnectionError:passif __name__=='__main__':url = 'https://www.lagou.com/jobs/positionAjax.json'params = {'first': 'true','pn': '1','kd': 'Python'}get_page(url,params)

拉钩网由于采取了反扒技术,使用简单的代理或者使用普通的headers都会被屏蔽,提示“您的操作过于频繁,请稍后再试”,经过尝试,如果采用完整的头部就没有问题,爬取的数据存储在MongoDB数据库中。

爬虫学习之17:爬取拉勾网网招聘信息(异步加载+Cookie模拟登陆)相关推荐

  1. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  2. 【Python】Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息

    Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息 背景 Scrapy工作原理 创建项目 创建爬虫 确定数据爬取思路 编写对象:item.py 制作爬虫:muchongrecruit.py 存储内容:p ...

  3. Python爬虫学习---------使用beautifulSoup4爬取名言网

    爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) #! /usr/bin/python3 # -*- coding:utf-8 -*-from urllib.requ ...

  4. Python爬虫实战+Scrapy框架 爬取当当网图书信息

    1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...

  5. 爬虫爬评书吧_爬虫学习:xpath爬取评书网

    在家闲着,想找点评书听,但找了很久都没找到方便打包下载的地方.于是就拿起自学的python爬虫,自己动手丰衣足食. 运行环境:Windows7,python3.7 操作步骤: 1.打开选好的评书主页面 ...

  6. 爬虫学习笔记——Selenium爬取淘宝商品信息并保存

    在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...

  7. python爬虫爬取房源_Python爬虫项目--爬取自如网房源信息

    本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http:/ ...

  8. Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息

    XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...

  9. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

  10. python爬虫学习 之 定向爬取 淘宝商品价格

    python爬虫学习 之 定向爬取 淘宝商品价格 import requests import redef getHTMLText(url):try:r = requests.get(url, tim ...

最新文章

  1. 视频也能P!谷歌CVPR 2021最新视频P图模型omnimatte
  2. HTML的标签描述24
  3. ListView的分页显示
  4. 使用 Apache Commons CLI 开发命令行工具
  5. 『软件测试5』测开岗只要求会黑白盒测试?NO!还要学会性能测试!
  6. 英特尔发布边缘软件中心,抢滩 650 亿美元智能边缘市场!
  7. ❤️程序员国企太安逸想辞职,又嫌私企大厂压力大996我该如何选择?(高级全栈自动化之路)
  8. Pascal VOC 数据集国内下载
  9. php get 传循环出来的参数_简单学习PHP中的反射
  10. Apache Ant包进行ZIP文件压缩
  11. OpenGL ES总结(四)OpenGL 渲染视频画面
  12. python中的if语句
  13. keil5 调试不进主函数一直卡在0x1FFFF3B2 F8D01808 LDR r1,[r0,#0x808]
  14. 解决Server2008 R2 AD服务器 域组策略 XP桌面图标蓝底
  15. 在线微信对话生成器源码 装逼神器
  16. 游戏对战匹配逻辑小结
  17. 【音频解码芯片】VS1503音频解码芯片的应用
  18. __init__.py 文件用法
  19. 【luogu CF1009F】Dominant Indices(长链剖分优化DP)
  20. 96张完整PPT清晰解读全球智能制造趋势!

热门文章

  1. go如何实现图片拼接,文字书写
  2. sqli-labs(29-31)
  3. java代码防查重工具_代码查重工具sim
  4. 计算机文献信息检索发展的最高阶段,文献检索作业答案.doc
  5. 微信小程序的AppID在哪?
  6. [zz]u盘做系统启动盘后容量变小的解决方法 8GU盘变成2G 或 xG变成2G
  7. LeetCode347. 前 K 个高频元素(含详细解析JAVA实现)
  8. 【历史上的今天】3 月 2 日:雅虎正式成立;PC 设计先驱诞生;Excite@Home 破产
  9. 红米(RedmiBook)笔记本无线网卡QCA6174在Linux下wifi异常解决方法
  10. Android DeviceOwner 应用的能力