赞
踩
引用上篇对boss直聘每个岗位的源代码获取了之后,对字段的爬取
前言:https://blog.csdn.net/weixin_52001949/article/details/135452969
如有问题可私信关注博主
岗位名、岗位薪资、地区、工作地址、要求年限、学历、职位描述、岗位职责
公司名、公司规模、公司介绍、公司成立日期、行业
将每个字段的信息放在一个列表里,每个岗位一个列表,
岗位=[‘bi1’,‘bi2’,…] ,公司名=[‘a’,‘b’,‘c’,…]
最后用pandas中的Pandas中的DataFrame做成表格输出excel。
思路:
'职位关键字'
职位关键字_text = soup.find(class_='job-keyword-list')
'如果找不到的话该class,报错'
if 职位关键字_text:
text = [li.get_text(strip=True) for li in 职位关键字_text.find_all('li')]
else :
text='无'
职位关键字.append(text)
select 方法返回的是一个列表,包含所有匹配的元素。如果没有找到匹配的元素,它会返回一个空列表。要注意的是,select 方法总是返回一个列表,即使只有一个元素匹配。如果你只对第一个匹配的元素感兴趣,可以使用 select_one 方法,它返回单个元素而不是列表。
标签。返回的是一个元素。
soup.select("p:has(i.icon-scale)")
示例代码:
公司规模=[]
公司规模_text = soup.select_one('p:has(i.icon-scale)')
if 公司规模_text:
text=公司规模_text.get_text(strip=True)
公司规模.append(text)
同理找到class为icon-industry
公司行业_text = soup.select_one('p:has(i.icon-industry)')
if 公司行业_text:
text=公司行业_text.get_text(strip=True)
公司行业.append(text)
爬取代码
import pandas as pd count=0 链接=[] 工资 = [] 岗位名称=[] 岗位信息=[] 岗位年限=[] 地区=[] 位置=[] 职位关键字=[] 公司名=[] 公司链接=[] 公司规模=[] 公司行业=[] for boss_text in 源代码: soup = BeautifulSoup(boss_text, 'html.parser') '链接' 链接.append(详情列表[count]) count=count+1 '岗位名和工资' if soup.find(class_='info-primary'): info_primary_elements = soup.find(class_='info-primary') # print(info_primary_elements) name_element = info_primary_elements.find(class_='name') # 如果找到了 name_element if name_element: # 查找 name_element 下的 h1 标签 h1_element = name_element.find('h1') if h1_element: # 获取 h1 标签下的字符串 text1 = h1_element.get_text(strip=True) # 将字符串添加到列表中 岗位名称.append(text1) span_element = name_element.find('span') if h1_element: # 获取 h1 标签下的字符串 text2 = span_element.get_text(strip=True) # 将字符串添加到列表中 工资.append(text2) else : 岗位名称.append('无') 工资.append('无') '获取岗位信息' 岗位信息_text = soup.find(class_='job-sec-text') if 岗位信息_text: text3 = 岗位信息_text.get_text(strip=True).replace(';', ';\n').replace('。', '。\n') else : text3='无' 岗位信息.append(text3) '岗位年限' 岗位年限_text = soup.find(class_='text-desc text-experiece') if 岗位年限_text: text4 = 岗位年限_text.get_text(strip=True) else : text4='无' 岗位年限.append(text4) '地区' 地区_text = soup.find(class_='text-desc text-city') if 地区_text: text5 = 地区_text.get_text(strip=True) else : text5='无' 地区.append(text5) '位置' 位置_text = soup.find(class_='location-address') if 位置_text: text6 = 位置_text.get_text(strip=True) else : text6='无' 位置.append(text6) '职位关键字' 职位关键字_text = soup.find(class_='job-keyword-list') if 职位关键字_text: text = [li.get_text(strip=True) for li in 职位关键字_text.find_all('li')] else : text='无' 职位关键字.append(text) '公司信息-公司名,公司链接,公司规模' 公司名_text = soup.find(ka='job-detail-company_custompage') if 公司名_text: text1=公司名_text.get_text(strip=True) text2='https://www.zhipin.com'+公司名_text['href'] else : text1='无' text2='无' 公司链接.append(text1) 公司名.append(text2) 公司规模_text = soup.select_one('p:has(i.icon-scale)') if 公司规模_text: text=公司规模_text.get_text(strip=True) else : text='无' 公司规模.append(text) 公司行业_text = soup.select_one('p:has(i.icon-industry)') if 公司行业_text: text=公司行业_text.get_text(strip=True) else: text='' 公司行业.append(text) df=pd.DataFrame({ '链接':链接, '岗位名称':岗位名称, '岗位年限':岗位年限, '工资':工资, '岗位信息':岗位信息, '地区':地区, '位置':位置, '职位关键字':职位关键字, '公司名':公司名, '公司链接':公司链接, '公司规模':公司规模, '公司行业':公司行业 }) df.to_excel('boss(1.10).xlsx')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。