后续再重爬拉勾网,发现了很多原贴Python selenium+beautifulsoup 登录爬取拉勾网的代码问题,本文对代码进行了改进:

  1. beautifulsoup存在定位不准确,解析重复的问题,此版本不再使用;
  2. 增加了防selenium识别设置,可以参考代码option部分,或者见我的帖子python selenium被反爬系统识别的问题;
  3. 使用1个for循环进行多个列表元素遍历,具体实例可见我的贴子python 多元素多列表循环实例
  4. 增加防止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相关推荐

  1. Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)

    # -*- coding: utf-8 -*- #时间:2019.5.1 #运行环境Python 3.* ''' 1.运行此代码前需要先下载Chrome浏览器,去百度搜索下载 2.我是利用seleni ...

  2. python爬取拉勾网_(转)python爬取拉勾网信息

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  3. python 免登录爬取 拉勾网职位信息

    需要安装的库requests和pandas 2019年8月12日测试可用,下面是源码,复制粘贴即可用 import requests,pandasdef parse_page(keyword,pn): ...

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

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

  5. selenium爬取拉勾网

    文章目录 1 安装selenium和webdriver 1.1 自动控制浏览器 2 正式爬取拉勾网 2.1控制浏览器,进入拉勾网 2.2爬取所需内容 2.2.1解析提取信息 2.2.2 翻页爬取 3 ...

  6. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据

    python实现模拟登录+爬取Nasa Modis 上的产品数据 概述 需求分析 基本思路 代码 概述 3月的中旬时候参与了学校的一个大创项目,作为本科生,本人只是摸鱼打杂,负责了其中的一个功能模块: ...

  7. Python爬取拉勾网职位数据

    哈喽大家好,我是宁一,今天我们来讲讲Python爬虫,用Python来爬取拉勾网的数据,拉勾网的反爬虫技术做的很厉害,通过普通的header请求总是返回请求频繁的信息 所以我们主要来用selenium ...

  8. Python搭建代理池爬取拉勾网招聘信息

    先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...

  9. python爬取拉勾网给定关键词职位信息存入数据库_Python 爬取拉勾网python职位信息...

    今天的任务是爬取拉勾网的职位信息. 首先,我们进入拉勾网,然后在职位搜索栏搜索Python 的同时,打开控制面板F12,来查看网页构成. 在XHR里,可以清楚的看见Ajax请求,所以需要使用sessi ...

  10. 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...

    python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...

最新文章

  1. 使用class weight和sample weight处理不平衡问题
  2. [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
  3. [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
  4. centos7 php7 httpd
  5. VTK:Points之PowercrustExtractSurface
  6. MFC中的CAsyncSocket类实现网络通信
  7. MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)
  8. python清洗数据用什么包_格式化和清洗数据的Python工具包
  9. 利用批处理自动执行sql脚本、备份、还原数据库
  10. matlab里dcgain,制系统的时域分析
  11. 接口实例(C#,IShape)【C#】
  12. 【入门篇】接口自动化测试
  13. 使用zabbix-agent2自定义插件获取https证书过期时间
  14. 【SCIR笔记】ACL20 让模型“事半功倍”,探究少样本序列标注方法
  15. MATLAB 安装包
  16. 转:adb连接手机进行调试有两种方式
  17. 百度翻译API使用简介
  18. 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
  19. mysql的填充因子_SQL Server表索引:调整填充因子
  20. 换服务器皮肤文件,lol怎么替换皮肤文件

热门文章

  1. Linuxnbsp;cat命令详解
  2. Hold住通话有三种方式
  3. C++ 批量图片拼接
  4. UE4母材质之法线贴图
  5. 白平衡(WB:white balance)数值设置
  6. 期权定价模型之Merton模型的校准与定价【python量化】
  7. java编写数独_简单实现java数独游戏
  8. 你所谓的诗和远方,不过是虚荣感作祟
  9. QDateTime 和tm 的时间显示
  10. 《人生七年》纪录片总结