牢记:学而不思则罔,思而不学则殆
今天练习了拉勾网关于测试开发工程师职业的获取
step1:打开拉勾网
step2:处理地址选择框
step3:定位输入框,输入“测试开发工程师”;定位提交按钮
step4:对职业信息进行定位获取,获取的是列表
step5:把当前页的信息写入文档
step6:定位下一页
遇到的问题:
问题1:
文档出现中文乱码
解决方案:
with open('job_info_txt','a',encoding='utf8') as f
加了:encoding='utf-8
问题2:
当我发现每页有15条记录的时候,自然而然的进行range(15)的循环,如果最后一页没有15条记录,就会溢出列表
解决方案:
try except
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
import os
driver=webdriver.Chrome()
#打开拉勾网
driver.get('https://www.lagou.com')
#最大化窗口
driver.maximize_window()
time.sleep(2)
driver.implicitly_wait(2)
#打开官网的时候,会有选择的地点,定位到‘X’,关闭选择
driver.find_element_by_id('cboxClose').click()
time.sleep(2)
#搜索测试开发工程师
driver.find_element_by_css_selector('#search_input').send_keys('测试开发工程师')
driver.find_element_by_css_selector('#search_button').click()
time.sleep(2)
#因为要多次调试跑代码,所以如果文件已存在,就进行删除
try:
os.remove('job_info_txt')
except FileNotFoundError:
pass
#定位需要的信息
def jobs():
try:
job_names=driver.find_elements_by_xpath('//div/a/h3')
job_address=driver.find_elements_by_css_selector('.add>em')
job_money_require=driver.find_elements_by_css_selector('div.p_bot>div.li_b_l')
except NoSuchElementException:
driver.quit()
else:
return job_names,job_address,job_money_require
def next_page():
try:
#定位下一页
next_p=driver.find_element_by_css_selector('.pager_next')
except NoSuchElementException:
driver.quit()
else:
next_p.click()
#写入文件
def write_file(job_data):
#之前没有加encoding='utf-8',导致文件中文乱码,后解决
with open('job_info_txt','a',encoding='utf8') as f:
f.write(job_data)
f.write('\n')
f.close()
# 主程序,循环翻页,获取每一条数据,并写到 job_info.txt 文件。
for page in range(30):
jobs_names, jobs_address, jobs_money_require=jobs()
for i in range(15):
try:
job_name=jobs_names[i].text
job_address=jobs_address[i].text
info=jobs_money_require[i].text.split(' ')
job_money=info[0]
job_require=info[1]
job_edu=info[3]
job_data=job_name+','+job_address+','+job_money+','+job_require+','+job_edu
write_file(job_data)
except:
pass
next_page()
time.sleep(10)
job_info_txt:
测试开发工程师,上海·虹梅路,15k-25k,经验1-3年,本科 测试开发工程师,成都·锦江区,10k-20k,经验5-10年,本科 测试开发工程师,杭州·拱墅区,20k-35k,经验3-5年,本科 测试开发工程师,广州·琶洲,9k-14k,经验1-3年,本科 测试开发工程师,北京·望京,20k-25k,经验5-10年,本科 测试开发工程师(海外),广州·沙河,15k-30k,经验3-5年,不限 测试开发工程师,苏州·元和,15k-30k,经验3-5年,本科 测试开发工程师,济南·文化西…,6k-10k,经验1-3年,大专 112187-测试开发工程师(SH),上海·浦东新…,12k-20k,经验3-5年,本科 测试开发工程师(J10139),上海·汶水路,15k-20k,经验不限,本科 测试开发工程师,深圳·益田村,12k-18k,经验3-5年,本科 测试开发专家,深圳·深圳湾,20k-40k,经验3-5年,本科 测试开发工程师,上海·张江,25k-35k,经验5-10年,本科 测试工程师/测试开发,北京·酒仙桥,11k-17k,经验1-3年,本科 测试开发工程师-市场营销部(J13638),北京·万泉河,15k-20k,经验3-5年,本科 资深测试开发工程师,广州·琶洲,15k-25k,经验3-5年,本科 测试开发工程师,北京·上地,30k-60k,经验3-5年,本科 高级测试开发工程师(客户端),北京·中关村,25k-35k,经验3-5年,大专 资深测试开发工程师,北京·酒仙桥,20k-35k,经验3-5年,本科 测试开发工程师,北京·海淀区,25k-40k,经验3-5年,本科 测试开发工程师,南京·双闸,15k-30k,经验3-5年,本科 【暑期实习生】测试开发实习生(J10354),上海·莘庄,2k-4k,经验应届毕业生,本科 测试开发专家,北京·大望路,20k-40k,经验3-5年,本科 服务端测试开发工程师,杭州·拱墅区,20k-35k,经验3-5年,本科 测试开发工程师,南昌·洪都,7k-12