Selenium爬取实战52课件讲解.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Python爬虫Selenium爬取实战

目录0102030405准备工作爬取目标爬取分析与步骤爬取实现任务实现

1、安装好Python3.6版本以上,并能成功运行2、安装好Edge浏览器并正确配置了EdgeDriver3、安装好Selenium相关的包并能成功用Selenium打开Edge浏览器准备工作

1、爬取URL:https://spa2.scrape.center/问题:①页面与之前爬取的页面有无区别?②每部电影的URL和Ajax请求API有何变化?③依次点击列表页第1-10页,观察Ajax请求爬取目标无区别详情页URL与首页不同哪里不同?1、前期网站的URL里detail后面直接跟id2、这里的URL后面变成了一个长字符串接口参数多了一个token字段,且每次请求的token都不同API具有时效性,短期可访问,过段时间则直接返回401即详情页URL中包含了加密参数

结论:使用Selenium绕过分析与模拟Ajax请求的阶段,直接获取JavaScript最终渲染完成的页面源代码,再从中提取数据即可。爬取目标

1、爬取步骤1)通过Selenium遍历列表页,获取每部电影的详情页URL2)通过Selenium根据上一步获取的详情页URL爬取每部电影的详情页3)从详情页中提取每部电影的名称、类别、评分、简介、封面等内容4)将提取到的数据保存到本地爬取步骤

2、爬取列表页1)导入所需的库及初始化爬取步骤导入selenium相关包定义日志配置设置超时节点初始化浏览器对象声明了一个WebDriverWait对象,可以配置页面加载最长等待时间

2)爬取列表页提问:①列表页URL有什么规律?如何构造?用什么方法?②如何判断一个列表页是否加载成功?爬取步骤直接使用visibility_of_all_elements_located作为判断条件,加上CSS选择器内容,即可判断页面有无加载成功,配合WebDriverWait的超时配置,即可实现10秒的页面加载监听如果10秒内,配置条件得到满足,即代表加载成功,否则抛异常

①定义通用爬取方法爬取步骤要爬取的页面URL页面加载成功的判断条件定位器(一个元组)通过配置查询条件和参数来获取一个或多个节点

②定义列表页的爬取方法爬取步骤注:这里爬取页面时,不需要返回任何结果,因为执行完scrape_index方法后,页面正好处于加载完成状态,利用browser对象即可进行下一步的信息提取代表所有节点都加载出来才算成功定位器一个元组:用来配置参数获取一个或多个节点

③定义解析列表页方法爬取步骤提问:这里为什么要定义一个解析列表页方法?要获取什么?通过find_elements(By.CSS_SELECTOR)方法直接从列表页中提取了所有电影节点,接着遍历这些节点,通过get_attribute方法,提取详情页的href属性值,再用urljoin方法合并成一个完整的URL提取列表页中每部电影的href属性值合成详情页URL

④定义main方法爬取步骤遍历所有页码爬取每一个列表页提取详情页URL思考:finally的作用是什么?

3)爬取详情页①定义详情页的爬取方法假设:如果电影名称加载出来,就代表详情页加载成功实现:调用scrape_page方法即可爬取步骤如果执行了该方法没有抛出TimeoutException异常,就表示页面加载成功判断条件:即单个元素出现即可电影名称对应节点

②定义详情页解析方法爬取步骤调用该属性即可获取当前页URL提取指定名称对应节点的文本使用CSS选择器提取多个类别节点并遍历获取文本传入src提取封面URL使用class名称提取节点将所有结果构造成一个字典并返回

③改写main方法—添加scrape_detail()和parse_detail()方法的调用即可爬取步骤

1、存储为JSON格式文本文件①导入对应库及相关配置保存数据

②定义存储方法③再次改写main方法保存数据

1、设置无头模式—如果觉得爬取过程中弹出浏览器会造成干扰,可开启Chrome的无头模式任务实现不仅解决了干扰问题,爬取速度也会得到进一步提升

任务实现

任务实现

任务实现

常悦thankyou

文档评论(0)

vermonth134 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档