Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)
一、爬虫记得基本方法
1.1 爬虫概述
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
Python的爬虫相对其他语言来说还是很简单的,是通过requests 这个模块来进行操作的
因此在使用python进行信息爬取之前,要确保你已经下载了requests 这个模块,如果没有下载通过:pip install requests
这个命令下载一下就可以使用了.
1.2 爬虫的使用方法
爬虫是通过程序来对我们想要获取信息进行爬取,一般是采用requests 请求获取到网页的信息,然后再对网页的信息进行处理,拿到有效的数据.
- 通过requests的get方法获取到网页的信息
- 然后再提取出网页源代码
- 通过正则表达式从源代码中获取需要的信息
- 对信息再处理
- 保存数据
二、爬虫的操作实例
2.1 爬取文字
程序代码:
# # 实例 爬取段子标题和内容
import requests
import re
# 要爬取网页的链接
url = 'https://ishuo.cn/'
reponse = requests.get(url)
data = reponse.content.decode('utf-8')
# print(data)
res_title = re.findall('</span><a href="/subject/.*?">(.*?)</a>',data)
res_content = re.findall('<div class="content">(.*?)</div>',data)
# 创建一个字典用于存储数据
data_dict = {}
for i in range(len(res_title)):
data_dict[res_title[i]] = res_content[i]
for i in data_dict.items():
print(f'title:{i[0]:<50} {i[1]:<200}')
运行结果:
title:因为她是你的母亲 如果你得罪了老板,失去的只是一份工作;如果你得罪了客户,失去的不过是一份订单;是的,世上只有一个人可以得罪:你给她脸色看,你冲她发牢骚,你大声顶撞她,甚至当 着她的面摔碗,她都不会记恨你,原因很简单,因为她是你的母亲。
title:这个笑话好内涵,你懂了没? 有位非常漂亮的女同事,有天起晚了没有时间化妆便急忙冲到公司。结果那天她被记旷工了……吃惊]
title:悟空和唐僧一起上某卫视非诚勿扰 悟空和唐僧一起上某卫视非诚勿扰,悟空上台,24盏灯全灭。理由:1.没房没车只有一根破棍. 2.保镖职业危险.3.动不动打妖精,对女生不温柔. 4.坐过牢,曾被压五指山下500年。唐僧上台,哗!灯全亮。 理由:1.公务员; 2.皇上兄弟,后台最硬 3.精通梵文等外语 4.长得帅 5.最关键一点:有宝马!
title:为了某个在乎你的人,请节约你的真心 Save your heart for someone who cares. 为了某个在乎你的人,请节约你的真心!
2.2 对图片的爬取
程序代码:
# # #对图片的爬取
# # 首先第一步要做的就是导入需要用到的模块库
import re
import requests
# 获取要爬取信息页面的内容
for i in range(10):
url = f'http://www.nipic.com/design/acg/renwu/index.html?page={i+1}'
reponse = requests.get(url)
# 使用data变量将页面信息传递过来
data = reponse.text
# 编写正则表达式获取有效的内容(每张图片的url地址)
results = re.findall('data-src="(.*?)"',data)
# 循环拿出每个图片的url
count = 0
print(f"正在爬出第{i+1}页的信息...")
for result in results :
# 请求页面获取图片信息存入变量中
images_data = requests.get(result)
# 取出文件名
images_name = result.split('/')[-1]
# 格式化 图片信息成二进制形式
images_content = images_data.content
# 将二进制文件生成图片并保存
with open('images\\'+images_name, 'wb') as f:
f.write(images_content)
f.flush()
count += 1
print(f'保存第{count}张图片成功')
运行结果:
正在爬出第1页的信息...
保存第1张图片成功
保存第2张图片成功
保存第3张图片成功
保存第4张图片成功
保存第5张图片成功
保存第6张图片成功
保存第7张图片成功
保存第8张图片成功
保存第9张图片成功
保存第10张图片成功
保存第11张图片成功
保存第12张图片成功
保存第13张图片成功.....
2.3 对视频的爬取
程序代码:
# # # 对视频的爬取
import re
import requests
# 要爬取网站的url
url = 'http://www.mod.gov.cn/v/'
response = requests.get(url)
response.encoding = 'utf8'
data = response.text
page_url = re.findall('<a href="(.*?.htm)"',data)
for i in page_url:
page_url = 'http://www.mod.gov.cn/v/'+i
page_res = requests.get(page_url)
page_data = page_res.text
video_url = re.findall('//Video (.*?.mp4)',page_data)[0]
video_name = video_url.split('/')[-1]
video_data = requests.get(video_url).content
with open('videos\\'+video_name,'wb') as f:
f.write(video_data)
f.flush()
break
运行结果:
会在程序文件夹下的videos文件夹中保存视频的文件
总结
今日份学习的是Python的爬虫相关的知识。通过实际操作掌握了,python的强大, 对网页信息的获取以及内容处理这一块的功能表示叹服,学到了很多新的知识,也通过实际动手操作成功的对文字、图片、视频等网站进行了爬取,开心ing