版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合案例——爬取业务网站B
本章学习目标分析豆瓣电影Top250的网页结构和内容使用requests库编写爬虫代码获取指定的静态数据使用BeautifulSoup实现从网页中提取数据使用pymysql库实现数据的持久化4.4.1页面分析
使用谷歌浏览器进入业务网站网页界面可以获得相关信息,如电影名(moviename)、导演名(directorname)、年份(movieyear)、国籍(movienation)、电影类型(movietype)等的静态数据,如图4-1所示。图4-14.4.2获取静态数据
在开发者工具中Elements选项卡中可以获取得到电影的相关信息,如电影名,导演名,点评人数等,该类信息均为静态数据,如图4-2所示。因此这里可以使用requests库和lxml库编写自定义的爬虫代码对这些静态数据直接进行获取提供了依据。图4-2Elements选项卡中的静态数据
在“开发者工具”的network选项卡中可以观察到该网页的状态码(statuscode)、请求方式(requestmethod)、浏览器信息(User-Agent)等信息,如图4-3所示。这些信息能够为接下来的爬虫代码更直接的提取出需要的信息。图4-3浏览器详细的Headers信息通过前面对该页面进行了详细的结构和内容分析之后,现在可以开始使用requests和BeautifulSoup编写自定义的爬虫代码对该部分的静态数据直接进行获取了,这里主要包含三个步骤。1.准备阶段1)导入requests和BeautifulSoup,pandas,pymysql等,requests库用于获取URL的页面响应数据,BeautifulSoup用于从网页中提取数据。importrequestsfrombs4importBeautifulSoupimportpandasaspdimportnumpyasnpimportre静态数据获取的总体步骤 2)构建列表用于临时存储从网页中爬取出来的相关信息 movie_names_lst=[] director_names=[] actor_names=[] movie_years=[] movie_nations=[] movie_types=[] lst_data_table=[] 3)构造爬虫代码请求该URL的Headers头部信息。在开发者工具的“Network”选项卡下的“Headers”选项卡中得到该默认URL的Headers头部信息。其目的是豆瓣的后台服务器隐藏爬虫代码的真实身份,让爬虫代码带着这些请求信息伪装成浏览器正常访问该网站服务器的状态,而不被服务器的反爬措施发现。 headers={ 'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:68.0) Gecko/20100101Firefox/68.0’ }2.发送请求并获取响应 1)向服务端发起请求,如果成功,服务端会返回当前页面的所有内容(通常是一个html文件)然后手动指定编码集最后将请求之后的响应传入解析器。req=requests.get(url='movie.douban/top250?start=0',headers=headers)req.encoding='utf-8'soup=BeautifulSoup(req.text,features="lxml")3.解析需要的数据 1)使用BeautifulSoup中的find_all()方法定位到<divclass=”hd”>,从而缩小查找范围,并将所有符合条件的标签返回的列表数据临时保存在变量movie_item_hds中。movie_item_hds=soup.find_all('div',class_='hd’) 2)提取电影名称,利用for循环遍历movie_item_hds里面的数据,再次使用find_all()方法来查找电影名,并将查找到的数据临时保存在变量movie_names中。formovie_item_hdinmovie_item_hds:movie_names_sub=[]movie_names=movie_item_hd.find_all('span',class_='title')formovie_nameinmovie_names:print(movie_name.text.strip())movie_names_sub.append(movie_name.text.strip())movie_names_lst.append(movie_names_sub[0]) 3)提取评价人数、分数、电影导演等信息,在提取电影导演主演等信息的过程中是会发现有些数据由于导演名过长导致主演的信息被覆盖,需要进行一些特殊处理movie_item_bds=soup.find_all('div',class_='bd')formovie_item_bdinmovie_item_bds:director_name_sub=[]actor_names_sub=[]movie_years_sub=[]movie_nations_sub=[]movie_types_sub=[]movie_stars=movie_item_bd.find_all('div',class_='star')formovie_starinmovie_stars:movie_star_spans_comments=movie_star.find_all('span')[3]movie_star_spans_score=movie_star.find_all('span')[1]movie_item_p=movie_item_bd.find_all('p')[0]movie_item_p_string=movie_item_p.text.strip()if'豆瓣'inmovie_item_p_string: continueelse: result=re.split('主演:|主...',movie_item_p_string.strip())director_name_sub.append(result[0].strip().split("导演:")[1]) director_names.append(director_name_sub[0]) result2=re.split('主演:|主...',movie_item_p_string.strip()) movie_year=result2[1].split("\n")[1].strip()[0:4] movie_years_sub.append(movie_year) movie_years.append(movie_ye
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度农药农膜废弃物处理设施建设合同4篇
- 2025年度美容院美容技术专利授权使用合同范本4篇
- 2025个人独资企业股权转让与经营管理权转让合同2篇
- 2025年苗木种植与城市绿化美化工程合同4篇
- 二零二五年度文化旅游PPP项目合同编制指南3篇
- 二零二四年度仪器设备采购与技术支持服务合同3篇
- 2025年度个人责任担保服务合同样本
- 2025年度儿童专用棉被安全标准生产合同协议3篇
- 2025年度个人挖机租赁及施工服务合同4篇
- 2025年度窗帘行业标准制定合同3篇
- 数学-山东省2025年1月济南市高三期末学习质量检测济南期末试题和答案
- 中储粮黑龙江分公司社招2025年学习资料
- 湖南省长沙市2024-2025学年高一数学上学期期末考试试卷
- 船舶行业维修保养合同
- 2024年林地使用权转让协议书
- 物流有限公司安全生产专项整治三年行动实施方案全国安全生产专项整治三年行动计划
- 2025届江苏省13市高三最后一卷生物试卷含解析
- 产钳助产护理查房
- 招聘专员转正述职报告
- (完整版)小学生24点习题大全(含答案)
- 四川省2023年普通高等学校高职教育单独招生文化考试(中职类)数学试题(原卷版)
评论
0/150
提交评论