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

article/2025/7/11 9:24:08

         很多网站需要通过提交表单来进行登陆或相应的操作,可以用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数据库中。


http://chatgpt.dhexx.cn/article/V4yXiUio.shtml

相关文章

python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)

python成功爬取拉勾网&#xff08;一个小白的心里路程&#xff09; 最开始想爬取拉钩是因为半年前上python实验课的时候&#xff0c;老师给了两个任务&#xff0c;一个时爬取糗百的笑话内容&#xff0c;另一个时爬取拉勾网的职位信息&#xff0c;当时因为课时紧张的缘故&#…

爬虫实例二:爬取拉勾网招聘信息

爬虫实例二&#xff1a;爬取拉勾网招聘信息 如果是第一次看本教程的同学&#xff0c;可以先从一开始&#xff1a; 爬虫实例一&#xff1a;爬取豆瓣影评 欢迎关注微信公众号&#xff1a;极简XksA 微信账号&#xff1a;xksnh888 转载请先联系微信号&#xff1a;zs820553471 …

python爬虫之爬取拉勾网

这次要爬取拉勾网&#xff0c;拉勾网的反爬做的还是很不错的啊&#xff0c;因为目标网站是Ajax交互的我一开始是直接分析json接口来爬取的&#xff0c;但是真的很麻烦&#xff0c;请求头一旦出点问题就给识别出来了后续我就改了一下方法用selenium来模拟浏览器去获取 招聘求职…

爬虫练习六:爬取拉勾招聘信息

1. 明确需求 1. 初学爬虫时&#xff0c;看着各路大佬以拉勾网为案例进行爬虫讲解&#xff0c;自己也这样尝试。结果因为个人水平实在太低&#xff0c;很快就触发反爬虫机制&#xff0c;甚至连个人的账号都被封禁。所以这次想要重新挑战一下&#xff0c;爬取拉勾展示的招聘数据。…

用接口登录拉勾网

前段时间一直忙于公司项目的测试工作导致一周多没有撸代码&#xff0c;所以今天通过悠悠是博客学习了一下如何让用接口登录拉勾网 下面介绍一下吧&#xff01;分享下经验以及心得&#xff0c;&#xff0c;虽然我知道也没什么人会看&#xff01; 首先呢要先登录拉钩网的网站&am…

拉勾网登录问题

拉钩登录问题&#xff0c;在参考别人的博客后&#xff0c;解决啦 class lagouSpider(CrawlSpider):name lagouallowed_domains [www.lagou.com]start_urls [https://www.lagou.com/]agent "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/" \"537.36 (…

selenium实例登陆拉勾网 外加手动验证验证码

selenium模拟登陆拉钩网 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import os, json, time from urllib import parse from lxml import etree from fake_…

python -- 拉勾网爬虫模拟登录

入门爬虫一段时间&#xff0c;最近在做一个拉勾网的数据爬虫分析&#xff0c;项目也快接近尾声了&#xff0c;于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反爬虫机制还是可以的&#xff0c;一开始用scrapy shell 分析拉勾网&#xff0c;发现拉勾网要校验usera…

基于Python的拉勾网的模拟登录获取cookie

lagou_login 拉勾网的模拟登录获取cookie&#xff0c;为爬虫做准备, 喜欢的点个赞&#xff0c;谢谢 入门爬虫一段时间&#xff0c;最近在做一个拉勾网的数据爬虫分析&#xff0c;项目也快接近尾声了&#xff0c;于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反…

selenium模拟登陆拉勾网

初学selenium&#xff0c;尝试了一下模拟登录拉勾网&#xff0c;感觉还挺好玩的 就剩下最后的验证码不会处理了。。。 思路就是在网页代码中找到对应的框的属性进行查询&#xff0c;然后点击、输入就进行了。 之后就会看到Chrome弹出来自动完成一系列动作&#xff0c;感觉很…

如何高效地学习编程语言?

学习编程语言是一种技巧&#xff1a;做好了&#xff0c;你会感受到掌握新事物之后的快感&#xff1b;做不好&#xff0c;就会接二连三的沮丧&#xff0c;甚至放弃。下面我将介绍一些技巧与方法&#xff0c;以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习…

完全零基础,到底该怎样学习编程?

学习编程的过程&#xff0c;大致如下&#xff1a; 看书、看博客、学课程或者看视频等 模仿着书上或者博客的代码&#xff0c;进行复现&#xff0c;复现不重要&#xff0c;思考才是关键 ⚠️ 思考学习别人思路后&#xff0c;脱离书本和博客&#xff0c;完全自己实现功能 自己…

学习编程先学什么?怎么学习编程?

怎么学习编程 随着IT行业的快速发展&#xff0c;现在越来越多的人看中IT行业的前景&#xff0c;很多的人选择IT行业。其中大部分人会选择了学习编程语言&#xff0c;那么&#xff0c;怎么学习编程语言、学习编程先学什么就是人们最常遇到的困难&#xff0c;因此&#xff0c;小编…

我是如何学习编程的

我是如何学编程的 前世因今世果一轮回一回眸理论基础资源选择编程没有捷径合格程度兴趣培养学习时长解决问题推荐资源 学习资源推荐 微信扫码关注公众号 &#xff1a;前端前端大前端&#xff0c;追求更精致的阅读体验 &#xff0c;一起来学习啊关注后发送关键资料,免费获取一整…

骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师

本文章向大家介绍怎样学习编程&#xff0c;才能快速从0基础&#xff0c;变成编程大师&#xff0c;主要包括骨灰级程序员告诉你&#xff0c;怎样学习编程&#xff0c;才能快速从0基础&#xff0c;变成编程大师使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有…

新手如何学习编程?

文章来源&#xff1a;微信公众号丨代码情缘 这篇文章就和大家简单聊聊&#xff0c;如何学习编程&#xff1f; 2021 年内卷、躺平从一个小圈子话题快速升温为社会话题&#xff0c;其实很多人都想过躺平&#xff0c;那么首先问一下自己&#xff0c;有什么资本躺平&#xff1f; …

想自学编程,先学什么好?给你三个建议,自己斟酌

要学一门编程语言&#xff0c;我们要了解相应的语法规则&#xff0c;大概知道计算机读取代码的逻辑&#xff0c;培养机器思维。 学习编程&#xff0c;最开始应该先了解一下计算机的历史&#xff0c;计算机基础。因为你在编程的时候&#xff0c;你需要让计算机知道你的思维&…

微信小程序map组件地图定位当前位置

小程序map组件的应用方式&#xff1a;简单版 wxml: <map id"map" latitude"{{latitude}}" longitude"{{longitude}}" controls"{{controls}}" bindcontroltap"controltap"markers"{{markers}}" bindmarkerta…

Android 开发百度地图定位显示当前位置

Android 开发百度地图定位显示当前位置 配置百度地图-获取 SHA1 找到自己安装 Android SDK 的位置&#xff08;&#xff0c;该位置下面有一个 .android 文件夹&#xff1b;使用 cmd 命令进入该文件夹下&#xff1b;然后执行命令 keytool -list -v -keystore debug.keystore&a…

uniapp获取当前位置(定位-经纬度及城市信息)

uniapp集成方法&#xff0c;跟小程序wx.getLocation不同&#xff0c;可直接获取经纬度及城市信息&#xff08;当然你也可以先获取经纬度再解析成具体城市&#xff09; uni.getLocation({type: wgs84,geocode:true,//设置该参数为true可直接获取经纬度及城市信息success: func…