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脚本生成Android SALT扰码的方法
Sep 18 Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python3.6简单反射操作示例
Jun 14 Python
python实现五子棋游戏
Jun 18 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Python 占位符的使用方法详解
Jul 10 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
python配置文件写入过程详解
Oct 19 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
如何基于python对接钉钉并获取access_token
Apr 21 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中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
js date 格式化
2017/02/15 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
使用JavaScript破解web
2018/09/28 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
Python实现的HMacMD5加密算法示例
2018/04/03 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
执行总经理岗位职责
2014/02/03 职场文书
家长通知书教师评语
2014/04/17 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
Python OpenCV 图像平移的实现示例
2021/06/04 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers