登录爬取拉勾网2.0 Python selenium
后续再重爬拉勾网,发现了很多原贴Python selenium+beautifulsoup 登录爬取拉勾网的代码问题,本文对代码进行了改进:
- beautifulsoup存在定位不准确,解析重复的问题,此版本不再使用;
- 增加了防selenium识别设置,可以参考代码option部分,或者见我的帖子python selenium被反爬系统识别的问题;
- 使用1个for循环进行多个列表元素遍历,具体实例可见我的贴子python 多元素多列表循环实例
- 增加防止UnicodeEncodeError的代码(见末端)
上代码块:
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver import Chrome
import time
import csvjob_title_list=[]
job_link_list=[]
job_skills=[]
experience_list=[]
company_list=[]
industry_list=[]
company_describe_list=[]
company_link_list=[]
salary_list=[]
location_list=[]
head=['job_title','job_link','job_skills','experience','company','industry',
'company_describe','company_link','salary','location']
#北上广深
cities=['//div/a[@data-id="5"]','//div/a[@data-id="6"]','//div/a[@data-id="765"]','//div/a[@data-id="763"]']
keywords=['数据分析', 'bi','商业数据分析']
for keyword in keywords:# options是为了防爬虫做的设置options = webdriver.ChromeOptions()options.add_experimental_option('excludeSwitches', ['enable-automation'])driver=Chrome(options=options) url='https://www.lagou.com/'webpage=driver.get(url)time.sleep(2)#全国弹窗quanguo=driver.find_element_by_xpath('//p[@class="checkTips"]/a')quanguo.click()#登录界面login=driver.find_element_by_xpath('//li/a[@class="login"]')login.click()username=driver.find_element_by_xpath('//div/input[@type="text"]')#输入用户名和密码username.send_keys('xxx')psw=driver.find_element_by_xpath('//div/input[@type="password"]')psw.send_keys('xxx')log_in=driver.find_element_by_xpath('//div/div[@class="login-btn login-password sense_login_password btn-green"]')log_in.click()time.sleep(20)search=driver.find_element_by_xpath('//input[@id="search_input"]')search.send_keys(keyword)time.sleep(2)search_button=driver.find_element_by_xpath('//input[@id="search_button"]')search_button.click()time.sleep(3)#红包弹窗hongbao=driver.find_element_by_xpath('//div[@class="body-btn"]')hongbao.click()time.sleep(2)for city in cities:#有默认城市,在选择城市之前要先刷新下search_fresh=driver.find_element_by_xpath('//input[@id="submit"]')search_fresh.click()time.sleep(2)city=driver.find_element_by_xpath(city)city.click()time.sleep(2)a=1total_num=driver.find_element_by_xpath('//span[@class="span totalNum"]').textcurrent_page=driver.find_element_by_xpath('//span[@class="pager_is_current"]').text#最后一页会跳出验证窗口,太麻烦,我选择不爬取最后一页while int(current_page) < (int(total_num)-1):time.sleep(3)print('当前页码为:'+current_page+'页')#job_titles这一个路径包括了【公司名称】和【薪资水平】job_titles=driver.find_elements_by_xpath('//div[@class="s_position_list "]//ul[@class="item_con_list"]//li')job_links=driver.find_elements_by_xpath('//div[@class="s_position_list "]//a[@class="position_link"]')skills=driver.find_elements_by_xpath('//div[@class="s_position_list "]//div[@class="list_item_bot"]/div[@class="li_b_l"]')experiences=driver.find_elements_by_xpath('//div[@class="s_position_list "]//div[@class="p_bot"]/div')# company=job.find_element_by_tag_name('li').get_attribute('data-company')# salary=job.find_element_by_tag_name('li').get_attribute('data-salary')industrys=driver.find_elements_by_xpath('//div[@class="s_position_list "]//div[@class="industry"]') company_describes=driver.find_elements_by_xpath('//div[@class="s_position_list "]//div[@class="list_item_bot"]/div[@class="li_b_r"]')company_links=driver.find_elements_by_xpath('//div[@class="company_name"]//a')locations=driver.find_elements_by_xpath('//span[@class="add"]')#必须使用zip才可以多个列表循环for (jobs, jl, sk, ex, i, cd, cl, l ) in zip(job_titles,job_links, skills, experiences, industrys, company_describes, company_links,locations):job_title=jobs.get_attribute("data-positionname")job_title_list.append(job_title)job_link=jl.get_attribute("href")job_link_list.append(job_link)skill=sk.textjob_skills.append(skill)experience=ex.textexperience_list.append(experience)company=jobs.get_attribute('data-company')company_list.append(company)industry=i.text.strip()industry_list.append(industry)company_describe=cd.text.strip()company_describe_list.append(company_describe)company_link=cl.get_attribute('href')company_link_list.append(company_link)salary=jobs.get_attribute('data-salary')salary_list.append(salary)location=l.textlocation_list.append(location)next_page=driver.find_element_by_xpath("//div[@class='pager_container']/span[@action='next']")next_page.click()current_page=driver.find_element_by_xpath('//span[@class="pager_is_current"]').texttime.sleep(3)driver.quit()rows =zip(job_title_list,job_link_list,job_skills,experience_list,company_list,
industry_list,company_describe_list,company_link_list,salary_list,location_list)
csv_file=open('lggz.csv','w',newline='',encoding='utf-8')
writer=csv.writer(csv_file)
writer.writerow(head)
try: for row in rows:writer.writerow(row)csv_file.close()
except UnicodeEncodeError:for row in rows:writer.writerow(row)csv_file.close()
登录爬取拉勾网2.0 Python selenium相关推荐
- Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)
# -*- coding: utf-8 -*- #时间:2019.5.1 #运行环境Python 3.* ''' 1.运行此代码前需要先下载Chrome浏览器,去百度搜索下载 2.我是利用seleni ...
- python爬取拉勾网_(转)python爬取拉勾网信息
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- python 免登录爬取 拉勾网职位信息
需要安装的库requests和pandas 2019年8月12日测试可用,下面是源码,复制粘贴即可用 import requests,pandasdef parse_page(keyword,pn): ...
- python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)
python成功爬取拉勾网(一个小白的心里路程) 最开始想爬取拉钩是因为半年前上python实验课的时候,老师给了两个任务,一个时爬取糗百的笑话内容,另一个时爬取拉勾网的职位信息,当时因为课时紧张的缘 ...
- selenium爬取拉勾网
文章目录 1 安装selenium和webdriver 1.1 自动控制浏览器 2 正式爬取拉勾网 2.1控制浏览器,进入拉勾网 2.2爬取所需内容 2.2.1解析提取信息 2.2.2 翻页爬取 3 ...
- 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据
python实现模拟登录+爬取Nasa Modis 上的产品数据 概述 需求分析 基本思路 代码 概述 3月的中旬时候参与了学校的一个大创项目,作为本科生,本人只是摸鱼打杂,负责了其中的一个功能模块: ...
- Python爬取拉勾网职位数据
哈喽大家好,我是宁一,今天我们来讲讲Python爬虫,用Python来爬取拉勾网的数据,拉勾网的反爬虫技术做的很厉害,通过普通的header请求总是返回请求频繁的信息 所以我们主要来用selenium ...
- Python搭建代理池爬取拉勾网招聘信息
先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...
- python爬取拉勾网给定关键词职位信息存入数据库_Python 爬取拉勾网python职位信息...
今天的任务是爬取拉勾网的职位信息. 首先,我们进入拉勾网,然后在职位搜索栏搜索Python 的同时,打开控制面板F12,来查看网页构成. 在XHR里,可以清楚的看见Ajax请求,所以需要使用sessi ...
- 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...
python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...
最新文章
- 使用class weight和sample weight处理不平衡问题
- [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
- [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
- centos7 php7 httpd
- VTK:Points之PowercrustExtractSurface
- MFC中的CAsyncSocket类实现网络通信
- MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)
- python清洗数据用什么包_格式化和清洗数据的Python工具包
- 利用批处理自动执行sql脚本、备份、还原数据库
- matlab里dcgain,制系统的时域分析
- 接口实例(C#,IShape)【C#】
- 【入门篇】接口自动化测试
- 使用zabbix-agent2自定义插件获取https证书过期时间
- 【SCIR笔记】ACL20 让模型“事半功倍”,探究少样本序列标注方法
- MATLAB 安装包
- 转:adb连接手机进行调试有两种方式
- 百度翻译API使用简介
- 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
- mysql的填充因子_SQL Server表索引:调整填充因子
- 换服务器皮肤文件,lol怎么替换皮肤文件