终于五一了,好不容易迎来了小长假,首先在这里恭祝大家节日快乐,劳动人民最可爱,向劳动人民致敬,在这也祝愿大家的付出都能够得到回报。
面对疫情后的复工复产,想必大家现在恨不得全部的时间都投入到工作中,恨不得一天有25个小时,最近时间管理这个词火了。为什么火了我也不知道。可能是大家都认识到合理安排时间的重要性了。
我想我也需要学学时间管理了,对的,就是时间管理,让你的每天多出一个小时, 当然多出来的这个时间不是为了多人运动,而是产出更多更好的优质文章。这样我也算是一个负责的公众号运营者了。哈哈哈,自我意淫下。
今天给大家带来的是使用bs4来爬取传智播客讲师团队的信息。本来按照教程上,应该是爬取腾讯社招上的招聘信息的,但是发现我实在是too young too simple了,现在人家都改使用接口了,所以这个会在下篇文章中给大家展示。
对于bs4给大家介绍下,bs4:BeautifulSoup,作用:用来解析网页,提取指定数据的。提供的接口非常简单。使用起来人性化。所以用的比较多,但是bs4只能解析html格式的数据。
首先让我们安装下bs4,通过cmd调出黑窗口命令行,输入如下代码:
pip install bs4
然后,我们在网址栏输入:
http://www.itcast.cn/channel/teacher.shtml,这个页面里面的讲师资料是我们想要爬取的内容,我们分析下页面,点击不同课程的讲师,可以发现链接的规律,如下图:
综上所得,可以看出所有的讲师的资料都是在
www.itcast.cn/channel/teacher.shtml,这个页面上的,只是通过不同的锚点,按照tab的形式进行展示的,所以我们只需要找到这个页面上讲师信息的规律即可,接下来我们就通过F12进行元素审查,
具体内容的获取如下图:
分析完网页,接下来让我们进入编码环节,代码如下:
import requests
from bs4 import BeautifulSoup
import json
import time
class itcast_teacher(object):
def __init__(self):
self.base_url = "http://www.itcast.cn/"
self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
self.item_list = []
#发出请求
def send_request(self, url, params={}):
time.sleep(1)
response = requests.get(url, headers=self.headers)
return response.content.decode('utf-8')
# 解析数据
def analysis_data(self, data):
# 1.转换类型
soup = BeautifulSoup(data, "lxml")
# 2.获取标签--列表
data_list = soup.select(".tea_txt ul li")
#print(len(data_list))
# 3.将里面的每一行的数据 提取出来
for per_data in data_list:
dict = {}
#获取老师的图片
dict['tea_img'] = self.base_url+per_data.select(".li_img img")[0]['data-original']
# 获取老师的姓名
dict['tea_name'] = per_data.select(".li_txt h3")[0].get_text()
# 获取老师的职称
dict['tea_rank'] = per_data.select(".li_txt h4")[0].get_text()
# 获取老师的描述
dict['tea_desc'] = per_data.select(".li_txt p")[0].get_text()
#print(dict)
#print(per_data)
#把信息追加到列表中
self.item_list.append(dict)
# 写入本地文件
def write_file(self,data):
# 将列表转换成 字符串str
data_str = json.dumps(self.item_list)
with open("teacher.json", "w") as f:
f.write(data_str)
def start_work(self):
#发出请求
data = self.send_request(self.base_url+"channel/teacher.shtml")
#解析获得的html页面
self.analysis_data(data)
#print(len(self.item_list))
#print(data)
#把页面信息写入本地
self.write_file(data)
# 3.解析数据 -->返回 判断是都是最后一页的条件
# print(self.analysis_data(data))
if __name__ == '__main__':
#实例化对象
tool = itcast_teacher()
#调用方法
tool.start_work()
然后我们执行程序,当我们看到本地生成一个teacher.json文件,即代表我们程序执行成功。如图:
以上就是给大家的分享,谢谢大家。该程序代码为:teach_spider.py,代码获取请在后台回复:传智播客,更多精彩视频教程请关注微信公众号spiderBy,回复python教程即可获取。