初中信息技术-Python编程-【网络爬虫爬数据】_第1页
初中信息技术-Python编程-【网络爬虫爬数据】_第2页
初中信息技术-Python编程-【网络爬虫爬数据】_第3页
初中信息技术-Python编程-【网络爬虫爬数据】_第4页
初中信息技术-Python编程-【网络爬虫爬数据】_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初中信息技术Python【网络爬虫爬数据】随着信息化社会的到来,万维网已经堆积了大量信息,这就需要我们寻找一种方 式来帮助我们过滤掉无用的信息,并且筛选更多有用的信息作为反应,于是网络爬虫 技术应运而生。在日常生活中,同学们可能听说过网络爬虫这个词,但到底什么是爬 虫,如何利用网络爬虫爬取自己需要的数据呢?通过本节的学习,你将掌握以下技能:* 了解网络爬虫的工作过程*编写程序爬取B站弹幕专题一:初识爬虫在编写爬虫程序之前,我们需要先了解下网络爬虫的概念、爬虫的基本过程和爬 虫的基本架构。什么是爬虫网络爬虫,也叫网络蜘蛛,它是一段自动访问互联网并从中提取数据的程序。我 们浏览的每一个网页都对应着

2、唯一的网页地址,即URL,而一个网页中又包含着指向 其他网页的URL ,这种URL相互指向的关系就形成了互联网。为了从互联网中获取需 要的信息,以前我们需要人工翻开网页进行检索,但是有了爬虫后,我们就可以借助 网络爬虫自动获取网络上的信息并从中提取有价值的数据。网络爬虫按照系统结构和 实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络 爬虫、深层网络爬虫。D、json 和 xml2、在编写爬虫程序爬取数据时,以下观点正确的选项是()A、互联网是开放的,所有数据都可为我所用B、站点不让爬取的数据偷偷爬取不被发现就好C、遵守Robots协议,不做“恶意爬虫”D、网络爬虫有风

3、险,最好不要学人工URL是统一资源定位符(Uniform Resource Locator )的英文缩写,也就是我们常 说的网址,比方大家熟悉的百度搜索地址就是一个URLO互联 网上的每一个URL都是唯一的,URL指出了资源的具体位置以及浏览器如何处理这些 资源。在大数据时代,信息的采集是一项重要的工作,因此我们可以使用网络爬虫对数 据信息进行自动采集并合理处理这些信息以方便我们的工作和生活,比方我们可以爬 取热门新闻形成一个新闻聚合阅读器、爬取好笑的故事制作一款爆笑故事APP、爬取 不同网站的图书价格做比照等等。大数据时代离不开爬虫,在未来,爬虫的地位会越 来越重要。爬虫的基本过程爬虫的基本

4、过程分为4个步骤,即向服务器发起请求、获取响应内容、解析内容 和保存数据。1、向服务器发起请求。服务器是提供数据的设备,而发起数据请求的设备叫做客 户端。在客户端获取服务资源前需要先和服务器建立连接。当我们在地址栏输入网址 按下回车键后即向服务器发起了请求,如输入后浏览器会先将该URL解析成IP地址14.215.177.39 #然后通过TCP三次握手与百度服务器建立连接,并发起 请求,即 Request ;2、获取响应内容。服务器在接收到客户端发送来的Request后,会根据客户端的 请求找到客户端需要的资源文件,然后打包发送给客户端,即Response ;3、解析内容。客户端获取到服务器发来

5、的数据后,开始解析内容,解析的数据可 以是图片、视频、html数据、json数据等;4、保存数据。将解析的数据以文本或数据库的形式存储下来。由此我们可以得出一个简单爬虫架构:其中,爬虫调度端主要是负责爬虫的启动、停止以及监视爬虫的调度情况;在爬 虫程序中,URL管理器主要负责管理未爬取的URL集合和已爬取的URL集合,防止 重复或循环爬取;网页下载器是指将互联网上URL对应的网页下载到本地的工具,在 Python中常用的网页下载器有Python官方基础模块urllib2和第三方库requests ;网页 解析器是从网页中提取有价值数据的工具,主要有re正那么匹配、Python自带的 html.

6、parser模块、第三方库BeautifulSoup、xpath、Ixm库等;网页解析器将有价值的数据输出形成价值数据。爬虫程序在执行时,首先从URL管理器中获取一个待爬取的URL ,然后该URL 传送给网页下载器,网页下载器将URL指定的网页下载下来并存储成一个字符串,然 后传送给网页解析器解析,网页解析器一方面将字符串里包含的新的URL传送给URL 管理器,另一方面字符串里的有价值的信息形成价值数据并输出保存。专题二:爬取B站弹幕接下来我们爬取一个URL中的数据。为了爬取B站的弹幕,我们采用的网页下载 器为Requests库、网页解析器为BeautifulSoup库,BeautifulSo

7、up库能够帮助我们在不 用编写正那么表达式情况下也可以方便的实现网页信息提取。在使用之前,我们需要先 安装 Requests 库和 BeautifulSoup 库。2.1安装第三方库点击离线版海龟编辑器菜单栏中的库管理,在弹出的库管理界面选择爬虫,然后 分别点击Requests库和BeautifulSoup库后的安装即可。未登录 文件 。设置,6硬件 。库管理|。运行/发布旧新的作品库管理靠常用库官方游戏爬虫数据处理图袤爬虫RequestsRequestsReque比库可以用来发送请求、处理响应结果;学会Requests库,我们能轻 易调用网络ap】接口,实现爬虫、翻译、智能机器人等各种有趣的

8、效果。Beautiful SoupBeautiful Soup是一个可以从网站抓取数据并解析的Python库。学会 BeautifiilSoup库,我们可以用更简洁、高效的方式编写爬虫程序。2.1编写爬虫程序第一步:导入 Requests 库和 BeautifulSoup 库。1 #爬取B站弹幕数据 2 import requests 3 from bs4 import BeautifulSoup在导入库的时候,注意requests的大小写,在导入BeautifulSoup库时,不能直接 写成import BeautifulSoup ,这是因为BeautifulSoup已经被移植到BS4模块中

9、了,所以 我们在导入 BeautifulSoup 库时还需要导入 bs4 ,即 from bs4 import BeautifulSoupo第二步:找到弹幕的URL地址,这是爬虫的关键步骤。翻开B站的视频连接,如 科技类作品110还:上山13山(01111(10/84(4114781;然后按下F12键,翻开开发 者工具栏,选中功能模块Network下的XHR标签并按下F5键刷新页面(如图一), 在刷新出的资源信息中找到list.so?oid= 189825423 (如图二)并双击,弹出的窗口中可 以看到视频中所有弹幕的内容(如图三),这就是我们要找的弹幕信息了。在这一步 中,我们需要保存的是。

10、id后面的编号189825423 , B站每一个视频的弹幕都有着唯一 的编号。注意图二中的Requests URL地址并不是弹幕的实际地址,B站弹幕的实际地 址为 ,在这里将 oid 替换为 189825423 ,即 这就是我们需要爬取的 URL。QElements Console Sources I Network I Performance X 0, * Q View: = , U Group by frame U Preserve log U Disable cacFilter1 1 Hide data URLsJS CSS Img Media Font Doc WS Manifest

11、Other60000 ms 70000 ms60000 ms 70000 ms10000 ms 20000 ms 30000 ms 40000 ms 50000 ms图Namei 189825423-l-30280.m4s?expi 人 189825423-l-30280.m4s?expi u 189825423-l-30280.m4s?expi 189825423-l-30032.m4s?expi l_ report?cross_domain=true _ report?cross_domain=true 189825423-l-30280.m4s?expi H0list.so?oid=18

12、9825423X Headers Preview Response Timing GeneralRequest URL: o?oid=189825423Request Method: GETStatus Code: 6 200Remote Address: 120.92.174.135:443Referrer Policy: no-referrer-when-downgrade Response Headersaccess-control-allow-credentials: trueaccess-control-allow-headers: Origin,No-CacheX-Req d-Wi

13、th,If-Modified-Since?Pragma,Last-Modified,Ci Control, Expires, Content-Type Access-Control-Alli edentialsDNTX-CustomHeaderKeep-Alive,User-Agiweb?001111158Q43645Q4801.图二, U, befl IdU,叉b611NUU391U悦 1 ”外长的再苜落人并吊刖女主燃/dd p=534,19900, 1,25, 16777215, 1589254210, 0, 1c 135477,32564594622332933”薪分作文。d 尸13.0

14、190Q 1,25,167772应 1589254370,0,dff0b24,32564678676185093“)汶川亲历,四川成都,永远铭记。原一切都好d 尸212.64000,1,25, 16777215,1589254917,0, 8956388,32564965576015875王毅! 想念温爷爷d 尸98. 65100, 1, 25, 16777215, 1589255077,0, 18f 73e5b, 32565049439551495温胡十年晒/dd p=M214.29900, 王外长国d 2.69000, 1,25, 16777215, 1589255673, 0, 3b85

15、435d, 32565361871159299说实话,中国不需要向世界展示什么,如果足够自信的话点火! ! d 尸3.34300, 1,25, 16777215, 1589256519, 0, 7c373fe8,32565805656309765“我都见证了! d 尸3.71200, 1, 18, 16777215, 1589256991, 0, 6aa41326,32566052977115141进来的朋友记得三连,让更多人看到d 160.66000, 1,25, 16777215, 1589257007, 0, 853do94b, 32566061188513799为什么我的眼里常含泪水,

16、因为我热爱这片土地d 尸100.37900, 1,25, 16777215, 1589257085, 0, 2790e3ef, 胡爷爷好d p=75. 92600, 1, 25, 16777215, 1589258512,0,39abac26, 32566850475261957温爷爷d p= 蒲分Gddp=%46.89400, 1,25, 16777215, 1589261160, 0,40bc2041,32568238572830723。总分值作文啊! ! d *102.30500.1.25,16777215.1589262417. 0. 678d74ab. 325688975650979

17、89胡益给胡爷翁图三第三步:创立requests对象抓取URL中的信息,并打印。查看步骤2中的图二可 以发现,弹幕数据的请求方式为GET方式,因此程序中借助requests的get函数对弹 幕地址 发起数据请求。5 webpage = requests.get( s:)webpage.encoding = utf-8print(webpage.text)程序中,为防止抓取到的弹幕出现乱码,我们将获取到的数据webpage的编码格 式设置为“UTF-8,随后将数据打印出来,为什么不直接打印webpage而是 webpage.text呢?这是因为如果直接打印webpage的话会在控制台输出Resp

18、onse 200 请求成功的状态码,而打印webpage.text时才能将返回数据中的网页数据输出出来。chat .bilibili 1898254230/missionxmaxli rcexd p=497.29500,5,25,16776960,1589206985,0,002245,32539835383676931点火! ! /dxd p=506.52800,1,25,15138834,1589237022,0,bc6ac =210.46900,1,25,16777215,1589247586, 0r长的声音给人非常的平安感 d p=534.19900, 1,25,16777215,15

19、8925421 1589254370, 0,24,32564678676185093”汶川亲历,四川成都,永远铭记。虔一切都好/dxd p=212.64000,1, 25,16777215,1589254917,0, f8956388 68.87400, 1, 25, 16777215, 1589255031,0, 18f73e5b, 32565025336459267”想念温爷爷 /dXd p=98.65100, 1,25, 16777215, 1589255077, 0, 王外长国士 点火! ! d p=537.09800,1,25,16777215,1589256127,0,adb5de

20、94,325656001 65805656309765”找都见证,! 进来的朋友记得三连,让更多人看到 为什么我的眼里常含泪水,因为我独爱这片土地 温爷爷 0温爷爷 /dXd p=531.18000,1,第四步:创立BeautifulSoup对象,获取价值数据。因为弹幕的文件保存格式为.xml ,而BeautifulSoup可以高效的解析xml文件,所以网站解析器我们才选择用BeautifulSoupo在步骤三中可以看到获取的数据中有许多我们不需要的信息,因此需 要对抓取到的网页数据进行清洗。danmu = Beautif ulSoup( webpage .text html.parser1)

21、danmu=danmu.find_all(*d *)print(danmu)d p=497.29500,5,25,16776960,1589206985,0,f002f245,32539835383676931。点火! ! 。外长的声音给人左常的平安感 r d p=534.19900,1,25,16777215,1589254210, 7215,1589254370,0,dff0b24,32564678676185093”汶 jl| 亲历,四 jl| 成物,永远铭记。思一切都好 , d p=212 031,0,18f73e5b, 32565025336459267。想念温爷爷 , d p=98

22、.65100,1,25,16777215,1589255077,0r王外长国士, d p=2.69000, lz 25,16777215,1589255673, 0r 3b8543 89255688,0,6a443ab3,32565369584484419”点火! ! r d p=537.09800,lr25,16777215,1589256127,0radb5 256519,0,7c373e8,32565805656309765”找都见证 / ! , d p=3.71200, lr 18,16777215,1589256991,0, 6aa4程序中在新建BeautifulSoup对象时,需要

23、传递两个参数:需要分析的网页数据 webpage.text和网页数据的解析器html.parser , html.parser用于解析获取到的网页数据。 再次查看弹幕文件中的留言可以看到,每条留言的头尾标签为“d”,因此我们调用 BeautifulSoup的find_all函数提取所有以“d”为标签的数据,再次打印后发现提取的数 据内容只剩下以d”为标签的局部。第五步:保存弹幕内容。虽然步骤四中的信息已经得到了进一步的筛选,但是仍 然存在一些我们不需要的信息,因为BeautifulSoup对象中的信息是被明确区分为标签、 属性、内容的,其中“d”对应的局部为标签,“p”对应的局部为属性,因此我

24、们将内容 打印即可。danmu = BeautifulSoup(webpage.text., 1 html.parser)danmu=danmu.find_all(d1)for i in danmu:print(i.string)控制台占火IIJ、/、 点火菜长的声音给人非常的平安感总分值作文。汶川亲历,四川成都,永远铭记。堤一切都好 王毅!程序中,借助for循环遍历BeautifuISoup对象danmu中的内容,通过观察步骤四 打印出多的内容可以发现,danmu是一个列表,记下来调用string方法,将i转换为字 符串格式输出。第六步:保存弹幕内容。将获取到的弹幕数据以txt格式保存在文件

25、中,因为弹幕 有很多条,因此我们在翻开文件要注意文件翻开的方式。9 danmu_text = open(弹幕内容. txt1, ,a encoding= utf-81)for i in danmu:danmu_text.write(i.string)danmu_text.write(1rn1)danmu_text.close()print(,保存成功! ,)文件(B 幅凝回 格式(Q) 查看(V) 帮助(H)愿 么。 什 S 记 示 人为 感错 展 多因 全远 界 更, 安永 世 让水 的, 向 ,泪 常配 要 法等 非成 需 三常 人川 不 得里 给四 国!记眼 音:爷啊土中 !声文历爷年国i.文证50诗 1的作亲!温十长话!作番么的 火火长分川望胡外实火分梨 点点外满汶王想温王说占3襄进为胡温温食愿 么。 什 S 记 示 人为 感错 展 多因 全远 界 更, 安永 世 让水 的, 向 ,泪 常配 要 法等 非成 需 三常 人川 不 得里 给四 国!记眼 音:爷啊土中 !声文历爷年国i.文证50诗 1的作亲!温十长话!作番么的 火火长分川望胡外实火分梨 点点外满汶王想温王说占3襄进为胡温温食程序中新建了一个名为danmujext的文件对象,三个参数中,第一个“弹幕内容.txt”为保存的文件名,第二个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论