网页爬虫抓取百度图片(Python这把利器,开启网络爬虫之路(1)(组图))
优采云 发布时间: 2022-02-19 11:21网页爬虫抓取百度图片(Python这把利器,开启网络爬虫之路(1)(组图))
摘要:获取数据是数据分析的重要组成部分,网络爬虫是获取数据的重要渠道之一。鉴于此,我拿起了 Python 作为武器,开始了爬网之路。本文使用的版本是python3.6,用于抓取深圳大学首页的图片信息和百度股票网某只股票的日K和月K数据。程序主要分为三个部分:网页源代码的获取、所需内容的提取、所得结果的排列。
【欢迎关注、点赞、采集、私信、交流】一起学习进步
获取网页源代码 获取百度图片网页
通过在百度图片上随机搜索关键词,可以得到网页地址并分析其规律性。发现可以通过修改地址末尾的word字段来搜索任意关键字的图片。因此,我们通过自定义word字段,将自定义word字段添加到固有的URL格式中来获取要爬取的网页地址,并使用requests模块中的get函数将网页的源代码下载到记忆。
如:
param={"word":"深圳大学"}
r=requests.get('/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=47_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width= &height=&face=0&istype=2&ie=utf-8&',params=param)
1.2 百度*敏*感*词*采集
百度互联互通的信息在网页上以*敏*感*词*的形式展示,例如:
从这种显示数据的方式来看,直接从网页中获取所需的数据基本上是不可能的。因此,我们在巡视中打开网络查找*敏*感*词*中的数据源,如:
我们发现当月K按钮被点击时,地址出现在网络中。因此,当我们打开地址时,发现正是我们需要的数据。通过实验发现,地址中的数据会根据时间的变化自动更新。因此,复制地址,解析地址,得到要爬取的数据。
提取所需内容
2.1 从百度图片中提取图片地址
在解析网页的时候,我们发现所有页面的图片地址都在thumb:字段后面,所以我们可以使用re模块中的findall函数来匹配地址,如:
img_links=re.findall('"thumbURL":"(.*?)",',html)
获取到地址后,同样的方法可以使用requests.get将图片信息下载到内存中。
2.2 提取百度股票信息
解析之前得到的数据,发现其内容是以每个日期为单位记录的格式,而且非常有规律,如:{"errorNo":0,"errorMsg":"SUCCESS","mashData" :[ {"date":20180515,"kline":{"open":220.83999633789,"high":271.98001098633,"low":213.55599975586, "close":271.92001342773,"volume":39366713,"amount":0,"ccl":null,"preClose":272.26000976562,"netChangeRatio":-0. 201},
因此,同样的方式,通过requests.get,我们可以得到我们需要的每一条信息,比如获取零钱:
monthnetchangeratio=re.findall('"netChangeRatio":(.*?)}',html)
爬取结果整理
3.1 百度图片下载:
首先,创建一个保存图片的文件夹:os.makedirs('./szdx/',exist_ok=True)
获取到所有图片的地址后,可以通过设置循环来一张一张下载图片:
对于 img_links 中的链接:
picurl=链接
pic=requests.get(picurl)
打开 ('./szdx/img'+str(j)+'.jpg','wb') 作为 f:
对于 pic.iter_content(chunk_size=32):
f.write(块)
f.close()
j=j+1#这里的j是为了防止在给每张图片命名的时候重复命名。
3.2百度股票信息整理
在实验中,我们使用字典来存储股票信息,方便按日期顺序检索股票信息:
月数据={}
我=0
对于 d 日期:
数据={}
数据tmp={}
datatmp['open']=re.findall(d+',"kline":{"open":(.*?),"high"',html)
...(中间信息提取过程省略)
我=我+1
图为每日K数据的第一个日期信息。
总结
通过这个实验练习,我们熟悉了网页的构成和数据爬取的基本原理。更重要的是,通过编程练习,我们发现了许多新的编程技能,并在实践中不断提高这些编程技能。经过小组讨论,确定了数据的来源,掌握了各种函数的使用方法,掌握了数据的最终存储形式,最终完成了实验。