Python爬取51.job信息

利用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')
以下是一个简单的使用Python爬取51job招聘信息的示例程序: ```python import requests from bs4 import BeautifulSoup url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') job_list = soup.find_all('div', class_='el') for job in job_list: job_name = job.find('a', class_='t').text.strip() company_name = job.find('span', class_='t2').text.strip() location = job.find('span', class_='t3').text.strip() salary = job.find('span', class_='t4').text.strip() job_url = job.find('a', class_='t')['href'] print(job_name, company_name, location, salary, job_url) ``` 该程序使用requests库和BeautifulSoup库来获取和解析51job网站的招聘信息页面。它首先构建了目标页面的URL,并使用requests库发送HTTP请求,然后使用BeautifulSoup库解析响应的HTML内容。程序从解析后的HTML中查找招聘信息的列表,然后使用循环迭代每个招聘信息,并从每个信息中提取必要的信息,例如职位名称,公司名称,地点,薪资和招聘链接。最后,程序将提取的信息打印到控制台中。 需要注意的是,该示例程序只能爬取第一页的招聘信息。如果需要爬取更多的页面,需要修改URL中的页码参数。通过修改页码参数,可以实现爬取更多页面的招聘信息
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值