利用python,selenium爬取51.job岗位信息、公司名和薪资,存储在txt文件中。
1.使用selenium调用浏览器驱动访问51.job,在这里使用的是火狐浏览器。
browser = webdriver.Firefox()
browser.get('https://we.51job.com/pc/search')
2.输入要查询的岗位名称,点击搜索,显示所有js 。在51.job网页中利用F12查看网页源代码。
在搜索处右键选择检查,可以查看到当前位置对应的id名称,我们可以根据id来选择元素。在这里以测试工程师为例,在搜索框输入完毕后,点击搜索按钮,也是通过id的方式来找到搜索键。
#根据id选择元素,返回的就是该元素对应的webelement对象
element = browser.find_element(By.ID,'keywordInput')
#通过该webelement对象,就可以对页面元素进行操作了
#比如输入岗位名称(测试工程师)到输入框中
element.send_keys('测试工程师')
element = browser.find_element(By.ID,'search_btn')
element.click()
3.解析js源代码。
#找joblist-item-top的span得到岗位名和薪资
#找joblist-item-bot中的a标签
itemTop = browser.find_elements(By.CLASS_NAME,value='joblist-item-top')
span = itemTop[0].find_elements(By.TAG_NAME,'span')
itemBot = browser.find_elements(By.CLASS_NAME,value='joblist-item-bot')
itemBotNext = itemBot[0].find_elements(By.CLASS_NAME,value='bl')
company = itemBotNext[0].find_elements(By.TAG_NAME,'a')
4.存储数据到txt文件。
#把itemTop里的二十个元素分别进行fine_elements给span
#把itemBot里的二十个元素分别进行fine_elements给company
FilePath='E:/python/project/text/result.txt'
with open(file=FilePath,mode='w',encoding='utf-8') as f:
for i in range(0,len(itemTop)):
span= itemTop[i].find_elements(By.TAG_NAME,'span')
itemBotNext = itemBot[i].find_elements(By.CLASS_NAME,value='bl')
company = itemBotNext[0].find_elements(By.TAG_NAME,'a')
Line = span[0].text +'\t'+span[1].text +'\t'+ company[0].text +'\n'
f.write(Line + '\n')
5.汇总程序
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
browser.get('https://we.51job.com/pc/search')
time.sleep(5)
#根据id选择元素,返回的就是该元素对应的webelement对象
element = browser.find_element(By.ID,'keywordInput')
#通过该webelement对象,就可以对页面元素进行操作了
#比如输入岗位名称(测试工程师)到输入框中
element.send_keys('测试工程师')
element = browser.find_element(By.ID,'search_btn')
element.click()
time.sleep(2)
element1 = browser.find_elements(By.CLASS_NAME,value='joblist-item sensors_exposure')
#找joblist-item-top的span得到岗位名和薪资
#找joblist-item-bot中的a标签
itemTop = browser.find_elements(By.CLASS_NAME,value='joblist-item-tsop')
span = itemTop[0].find_elements(By.TAG_NAME,'span')
itemBot = browser.find_elements(By.CLASS_NAME,value='joblist-item-bot')
itemBotNext = itemBot[0].find_elements(By.CLASS_NAME,value='bl')
company = itemBotNext[0].find_elements(By.TAG_NAME,'a')
#把itemTop里的二十个元素分别进行fine_elements给span
#把itemBot里的二十个元素分别进行fine_elements给company
FilePath='E:/python/project/text/result.txt'
with open(file=FilePath,mode='w',encoding='utf-8') as f:
for i in range(0,len(itemTop)):
span= itemTop[i].find_elements(By.TAG_NAME,'span')
itemBotNext = itemBot[i].find_elements(By.CLASS_NAME,value='bl')
company = itemBotNext[0].find_elements(By.TAG_NAME,'a')
Line = span[0].text +'\t'+span[1].text +'\t'+ company[0].text +'\n'
f.write(Line + '\n')
871





