网页爬虫抓取百度图片(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数据的第一个日期信息。

  总结

  通过这个实验练习,我们熟悉了网页的构成和数据爬取的基本原理。更重要的是,通过编程练习,我们发现了许多新的编程技能,并在实践中不断提高这些编程技能。经过小组讨论,确定了数据的来源,掌握了各种函数的使用方法,掌握了数据的最终存储形式,最终完成了实验。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线