python2使用bs4爬取腾讯社招过程解析
Python  /  管理员 发布于 7年前   153
目的:获取腾讯社招这个页面的职位名称及超链接 职位类别 人数 地点和发布时间
要求:使用bs4进行解析,并把结果以json文件形式存储
注意:如果直接把python列表没有序列化为json数组,写入到json文件,会产生中文写不进去到文件,所以要序列化并进行utf-8编码后写入文件。
# -*- coding:utf-8 -*-import requestsfrom bs4 import BeautifulSoup as bsimport jsonurl = '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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号