python2使用bs4爬取腾讯社招过程解析


Posted in Python onAugust 14, 2019

目的:获取腾讯社招这个页面的职位名称及超链接 职位类别 人数 地点和发布时间

要求:使用bs4进行解析,并把结果以json文件形式存储

注意:如果直接把python列表没有序列化为json数组,写入到json文件,会产生中文写不进去到文件,所以要序列化并进行utf-8编码后写入文件。

# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup as bs
import json
url = 'https://hr.tencent.com/position.php?'
params = {
  'start':'10'
}
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
# 获取腾讯社招某个页面的页面源码
html = requests.get(url, params = params, headers = headers).text
# 创建soup对象,使用lxml解析器
soup = bs(html,'lxml')
# 选取类名为odd和even的tr标签
result1 = soup.select('tr[class="odd"]')
result2 = soup.select('tr[class="even"]')
# 列表拼接 l = [1,2] + [3,4],则列表l为[1,2,3,4]
result = result1 + result2
# 把数据存放在列表里面,列表的每个元素都为一个字典
l = []
data = {}
for item in result:
  # 获取标签的文本内容
  job = item.find_all('a')[0].get_text().encode('utf-8')
  category = item.find_all('td')[1].get_text().encode('utf-8')
  number = item.find_all('td')[2].get_text().encode('utf-8')
  address = item.find_all('td')[3].get_text().encode('utf-8')
  public_time = item.find_all('td')[4].get_text().encode('utf-8')
  # 获取标签的属性值
  link = item.find_all('a')[0].attrs['href']
  fulllink = ('https://hr.tencent.com/' + link).encode('utf-8')
  data['job'] = job
  data['category'] = category
  data['number'] = number
  data['address'] = address
  data['public_time'] = public_time
  data['fulllink'] = fulllink
  l.append(data)
  # 原来中文写不到文件里面的报错原因,没把python列表序列化为json数组
  # with open('tencent.json','a') as f:
  #  f.write(str(data) + '\n')
# 方法1存储数据,上面字典的值不用先进行utf-8编码
# 把数据以json文件形式存储
# f = open('tencent.json','a')
# 把python列表序转化为json对象。本地操作常用的是load dump。网络操作常用的loads dumps,而loads常用来把json格式转化为python格式,dumps把python格式序列为json格式
# dictdata = json.dumps(l,ensure_ascii=False)
# 把json对象写入json文件
# f.write(dictdata.encode('utf-8'))
# f.close()

# 把数据存入tencent.json文件内
json.dump(l,open('tencent.json','a'),ensure_ascii=False)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
django 自定义过滤器的实现
Feb 26 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
Python JSON编解码方式原理详解
Jan 20 Python
django 读取图片到页面实例
Mar 27 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
keras:model.compile损失函数的用法
Jul 01 Python
详解python内置模块urllib
Sep 09 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
利用python调用摄像头的实例分析
Jun 07 Python
详解用python计算阶乘的几种方法
Aug 14 #Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 #Python
用Python抢火车票的简单小程序实现解析
Aug 14 #Python
Python定时任务随机时间执行的实现方法
Aug 14 #Python
查看Python依赖包及其版本号信息的方法
Aug 13 #Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 #Python
Python编写带选项的命令行程序方法
Aug 13 #Python
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
python实现程序重启和系统重启方式
2020/04/16 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
党员个人整改措施
2014/10/24 职场文书
婚前协议书范本
2014/10/27 职场文书
教师考核评语大全
2014/12/31 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS