Python爬取51jobs之数据清洗(3)

 

前面已经用get_webpage方法获取网站,下面说一说如何从网站信息中过滤出我想要的信息(招聘公司,招聘信息,薪水)。

以一个公司招聘网站为例子,

ur=‘https://jobs.51job.com/hangzhou-jgq/104504900.html?s=01&t=0’

’我们要获取这3个地方的文本信息

首先导入requests模块,写上请求头

import requests
import re
from bs4 import BeautifulSoup


def data_cleaning():
    user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5; Windows NT)'
    headers = {
        'User-Agent': user_agent
    }
    url = "https://jobs.51job.com/hangzhou-jgq/104504900.html?s=01&t=0"
    r = requests.get(url, headers)
    soup = BeautifulSoup(r.text, 'html.parser', exclude_encodings="utf-8")

上面都是爬虫基础的,随便百度一下就行,简单来说,soup就是你在网页按F12出来的HTML代码。

接着在利用正则,BS4模块获取目的信息

整理如下:

def data_cleaning():
    ....  # 省略之前写的
    # 1,公司名称
    sname = soup.find_all(class_='catn')[0]['title']  
    # 2,职位信息
    directory = soup.find_all(class_='bmsg job_msg inbox')[0]  # 返回一个<class 'bs4.element.Tag'>
    # TypeError: 'NoneType' object is not callable
    job_datas = str(directory).replace("\n", "")
    pattern = re.compile('<div class="bmsg job_msg inbox">(.*?)<div', re.S)
    job_data = re.findall(pattern, job_datas)
    job_data = job_data[0].replace('<p>', '').replace('</p>','\n')
    # 3,月薪
    job_salary = soup.find_all(class_='cn')[0].strong.text
    return  sname,job_data,job_salary

值得注意的是:

job_datas = str(directory).replace("\n", "")

首先:directory = soup.find_all(class_='bmsg job_msg inbox')[0]返回的是一个元素,到底在Python里面算什么(NoneType),反正不是字符串,所以首先要将directory转换为字符串

然后directory其实还有很多换行符“/n”在你调试的时候并不会显示,但你在正则匹配的时候它又确确实实存在,所以为了方便消除换行符,用字符串的replace方法

后续只要将sname,job_data,job_salary存入MySQL数据库就算基本OK了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了从51job网站上爬取和清洗Python相关的数据,可以按照以下步骤进行操作: 1. 使用Python的requests模块发送HTTP请求,获取51job网站上的页面内容。可以使用如下代码片段作为示例: ```python import requests url = "https://search.51job.com/list/170200,000000,0000,00,9,99,python,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" } response = requests.get(url, headers=headers) ``` 2. 使用Python的HTML解析库,例如BeautifulSoup,解析网页内容并提取所需的数据。根据你的需求,你可以提取职位标题、发布日期、工资、工作地点、工作经验、学历要求、招聘人数、公司类别和公司规模等信息。 3. 将提取的数据保存到本地文件,例如CSV文件。你可以使用Python的CSV模块将数据写入CSV文件中,以便后续的数据清洗和分析。 4. 对保存的数据进行清洗和处理。根据你的需求,可能需要删除重复的数据、处理缺失值、格式化日期等。 5. 使用可视化库,例如pyecharts,对清洗后的数据进行可视化展示。你可以根据数据的特点选择适当的图表类型,如柱状图、折线图等,以帮助你更好地理解和分析数据。 通过以上步骤,你可以使用Python爬取和清洗51job网站上的Python相关数据,并对数据进行可视化展示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [记一次爬虫学习(爬取51job)](https://blog.csdn.net/qq_52720527/article/details/124368257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值