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

posted @ 2019-07-22 20:03  foreversun92  阅读(1755)  评论(1编辑  收藏  举报