c爬虫抓取网页数据(用到的编程工具是python3.7,你知道吗?)

优采云 发布时间: 2021-12-28 20:16

  c爬虫抓取网页数据(用到的编程工具是python3.7,你知道吗?)

  众所周知,爬虫是用python编程语言实现的,主要用于网络数据的爬取和处理,比如爬豆瓣电影TOP250、爬小说等……

  而爬帖对于刚毕业的大学生来说也是非常有必要的。来看看怎么实现(使用的编程工具是python3.7)

  一、抓取作业信息1.引导库

  简单方法:在cmd中输入pip安装库名

  urllib.request 用于模拟浏览器发起HTTP请求

  xlwt库支持python语言对excel表格进行操作

  re 库用于用正则表达式匹配和替换字符串

  

  pandas 库是一个开源的、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。

  读取爬取的excel表

  

  这部分主要使用pycharts来编辑图表,主库如下

  

  2.模拟浏览器发起请求

  首先指定请求爬取资源的域名'Host':''

  最重要的是使用正则表达式来理解字符串如何存储在正确的列表中。比如findall就是在字符串中查找所有正则表达式匹配的子串,并返回一个列表,如果有多个匹配模式,则返回一个元组列表,如果没有找到匹配,则返回列表

  

  3.数据存储

  

  

  

  二、数据清洗

  清理数据,如果有空值就删除整行,如果信息杂乱则删除整行

  

  数据清洗后的数据

  

  三、数据可视化

  使用pandas对第二张excel表进行操作

  

  #add() 用于添加图表数据和设置各种配置项;

  #render() 生成 .html 文件;

  #map的基本用法,add_schema()表示添加框架并导入map

  #set_series_opts() 可以设置标签等。

  #set_global_opts(),还可以设置很多配置项,比如:标题、工具箱等。

  1.教育要求玫瑰图

  

  

  2.工作经验要求漏斗图

  

  

  3.大数据城市需求分布图

  

  

  四、项目改进

  以上就是求职攀登项目的全部内容。完成这些内容后,我和我的朋友们也想到了一些改进,比如增加更多的数据清理,或者制作更多的图表,以方便分析工作情况;关键代码如下:

  1.改进一

  #转换工资单位

  b3 = u'万/年'

  b4 = u'千/月'

  li3 = a['薪水']

  对于范围内的 i(0,len(li3)):

  尝试:

  如果 li3[i] 中的 b3:

  x = re.findall(r'\d*\.?\d+',li3[i])

  #打印(x)

  min_ = format(float(x[0])/12,'.2f') #转为浮点,保留小数点后两位

  max_ = format(float(x[1])/12,'.2f')

  li3[i][1] = min_+'-'+max_+u'10,000/月'

  如果 li3[i] 中的 b4:

  x = re.findall(r'\d*\.?\d+',li3[i])

  #打印(x)

  #输入()

  min_ = format(float(x[0])/10,'.2f')

  max_ = format(float(x[1])/10,'.2f')

  li3[i][1] = str(min_+'-'+max_+'10,000/月')

  打印(i,li3[i])

  除了:

  经过

  2. 改进二

  min_s=[] #定义最低工资表

  max_s=[] #定义最高工资列表

  对于范围内的 i (0,len(experience)):

  min_s.append(salary[i][0])

  max_s.append(salary[i][0])

  如果#matplotlib模块无法显示中文字符串,可以使用如下代码

  plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体

  plt.rcParams['axes.unicode_minus'] = False #解决减号'-'在保存的图片中显示为正方形的问题

  my_df = pd.DataFrame({'experience':experience,'min_salay': min_s,'max_salay': max_s}) #相关的工作经验和工资

  data1 = my_df.groupby('experience').mean()['min_salay'].plot(kind='line')

  plt.show()

  my_df2 = pd.DataFrame({'education':education,'min_salay': min_s,'max_salay': max_s}) #相关的教育和工资

  data2 = my_df2.groupby('education').mean()['min_salay'].plot(kind='line')

  plt.show()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线