大数据采集与预处理课件:requests技术应用案例-业务网站C动态数据采集1_第1页
大数据采集与预处理课件:requests技术应用案例-业务网站C动态数据采集1_第2页
大数据采集与预处理课件:requests技术应用案例-业务网站C动态数据采集1_第3页
大数据采集与预处理课件:requests技术应用案例-业务网站C动态数据采集1_第4页
大数据采集与预处理课件:requests技术应用案例-业务网站C动态数据采集1_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

综合案例——爬取业务网站C本章学习目标分析业务网站C的网页结构和内容使用requests库编写爬虫代码获取指定的动态数据使用urlencode方法编码使用pymysql库实现数据的持久化在进入业务网站C界面时,在切换“城市”时会出现不同的汽车信息。通过“开发者工具”的Network选项卡中的XHR可以发现出现了一个动态数据请求URL,如图5-1所示。因此,接下来将围绕该URL进行分析。4.5.1

页面分析图5-1动态数据请求URL通过“开发者工具”的Network栏目中的XHR查看该URL的Preview可以看到返回的动态数据,如图5-2所示。该数据是一个字典和列表相互嵌套使用的数据集合。因此,要获得指定的数据就必须要对该数据集合进行准确的解析。图5-2动态数据的结构和内容在“Headers”选项卡,可以看见这个AJAX请求的URL地址是./ashx/AjaxIndexHotCarByDsj.ashx?cityid=110100其中cityid参数为110100,如图5-3所示图5-3切换该网站的城市位置如图5-4所示,打开“network”选项卡发现XHR中又出现了AJAX条目,并且和上一个城市的AJAX条目有共同之处。参数cityid发生了改变,变为了500100。./ashx/AjaxIndexHotCarByDsj.ashx?cityid=500100图5-4由此可以分析得出,此处的cityid参数就是指代不同的城市编码,并根据不同的cityid值返回不同城市的汽车信息,如图5-5所示。图5-3通过使用“开发者工具”详细查看并分析了页面内容,现在已经获得了动态数据的结构和内容。因此,这里使用requests库编写自定义的爬虫代码,针对页面结构通过使用循环语句获取到页面结构中指定的动态数据。4.5.2

获取动态数据1)导入urlencode和requests,前者表示使用urlencode方法编码url,后者表示使用requests对象来发送请求,并返回响应的数据。fromurllib.parseimporturlencodeimportrequests2)找到需要模拟的AJAX请求的url,并将其复制给变量original_url。fromurllib.parseimporturlencodeimportrequests3)根据该AJAX条目的RequestHeaders设置符合该AJAX的请求基本信息。requests_headers={'Referer':'./beijing/','User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)''Chrome/57.0.2987.133Safari/537.36','X-Requested-With':'XMLHttpRequest',}4)自定义一个函数get_one(cityid),讲形参设置为cityid,表示将接收一个代表城市编码的参数,并将该参数传入字典p中。使用urlencode()方法将字典p的值添加到original_url中,得到完整的URL请求。在try..except..语句中使用requests的get()方法获得上面的URL,并通过设定判断条件,将得到的response响应数据格式化为JSON。defget_one(cityid):p={'cityid':cityid}complete_url=original_url+urlencode(p)try:response=requests.get(url=complete_url,params=requests_headers)ifresponse.status_code==200:returnresponse.json()exceptrequests.ConnectionErrorase:print('Error',e.args)5)再自定义一个函数parse(json),将形参设置为Json,表示这里将接收的数据格式为JSON。通过前面的分析得出,这个AJAX返回的数据是一个字典列表,因此,通过设置判断条件,使用json[0].get(‘name’)将获得第一个字典集合中的车型名称。defparse(json):ifjson: item=json[0].get(‘

温馨提示

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

评论

0/150

提交评论