首先说一下requests+BeautifulSoup对页面的解析 安装requests和BeautifulSoup    安装步骤我在这里就不说了

1.通过requests来读取网页信息  可以通过状态码来判断是否成功。

这种requests是最基本的,有的网页可能会需要cookie、表单提交登录,还有些网页需要权限的user-agent、通过IP来限制。这些可以在百度上查一下。https://www.cnblogs.com/wyl-0120/p/10358086.html

2.通过BeautifulSoup来自定义解析网页

soup = BeautifulSoup(response_data.text, "html.parser")

2.1 把用requests读取到的网页文件转化成BeautifulSoup格式

url_list= soup.find_all("a", href=re.compile('%s' % (www.baidu.com))

2.2 通过find_all来查找a标签中href属性包括www.baidu.com的标签出来(当然BeautifulSoup还有其他的查找方法,但是本人感觉用的地方不多)

得到的是一个bs4.element.Tag的列表,然后遍历列表。获取每个Tag的其他属性

r = re.findall(r"> (.*?)", responseData.text, re.S)

也可以通过这种根据前后标记来获取数据,这种方法相对更灵活一点。有这两种,基本上页面的数据就可以抓取的差不多了

但是有些网站的为了防止爬虫。做了一些JavaScript脚本代码。就是说,你加载页面时,获取不到页面的html。只有在触发脚本代码事件。才会渲染出真正的html

比如:页面的上一页下一页的操作。如果获取不到下一页的html就没办法抓取这个网站的全部页面。这个时候就需要今天的重头戏了python selenium

2  python selenium

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口

browser =webdriver.Chrome()

browser.get(www.baidu.com')

在创建浏览器对象时,需要安装浏览器驱动(版本必须和浏览器对应),webdriver.Chrome(path)是有一个参数的,参数就是浏览器驱动路径。(如果把驱动路径放入打path变量中,就可以不写参数了)

元素定位

find_element_by_id() # 通过元素ID定位

find_element_by_name() # 通过元素Name定位

find_element_by_class_name() # 通过类名定位

find_element_by_tag_name() # 通过元素TagName定位

find_element_by_link_text() # 通过文本内容定位

find_element_by_partial_link_text()

find_element_by_xpath() # 通过Xpath语法定位

find_element_by_css_selector() # 通过选择器定位

这些都是获取一个element的,如果想获取多个,加s(eg:find_elements_by_name())

一般用的多的就是find_elements_by_xpath()这个了。

element_all = browser.find_elements_by_xpath('//div//a[contains(@href, "www.baidu.com")]')

这个是获取div下的a标签的href属性中包括www.baidu.com的全部WebElement,会得到一个WebElement的列表

通过遍历WebElement的列表可以获取符合条件的WebElement,然后通过WebElement的方法,就能获取想要的字段的属性了

python3.8使用requests_python3.8通过python selenium+(requests+BeautifulSoup)对页面进行彻底爬取...相关推荐

  1. python+selenium爬虫搜索今日头条文章并爬取文章相关数据(点赞、评论等)

    首先需要一个登录模块,由于今日头条需要登陆就可以搜索,因此这里不登陆,只获取页面 #打开浏览器(不登陆) def login():url = 'https://www.toutiao.com/'opt ...

  2. Python 利用requests+BeautifulSoup4编写原生爬虫,爬取电影天堂最新电影,并打造最新电影下载及查询器

    可能有许多人有这样的一种烦恼,当想要查看最近更新的电影时,不得不打开电影天堂的官网进行查询(当然如果你习惯用电影天堂下载电影的话/微笑),当点击了解电影详情的时候,网页往往就切换到了广告页面,很烦有没 ...

  3. Python + selenium + requests实现12306全自动买票

    Python + selenium + requests实现12306全自动买票 2020.05.03更新: 下面是新的测试结果: 2021.03.28更新:谷歌浏览器升级导致之前的隐藏方法失效,更新 ...

  4. Python selenium根据class定位页面元素,xpath定位

    Python selenium根据class定位页面元素 在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写 ...

  5. python+selenium+webdriver 截取全页面长图

    有的时候我们要截取整个页面,而不是当前的屏幕. python+selenium+webdriver 截取全页面长图: from selenium import webdriver import tim ...

  6. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  7. python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片

    python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片 1.前言 在上一篇文章urllib使用:根据关键词自动爬取下载百度图片 当中,我们已经分析过了百度图片的搜索URL的变化 ...

  8. python对城市规划_Python对城市距离自动化爬取【必学小型项目】

    本地创建数据库,将 excel 数据存储到 city 表中,再取 | 湖北省 | 的所有地级市和县.县级市.区数据作为样表数据记录在样表中.利用 python 的 xlrd 包,定义 process_ ...

  9. python跑一亿次循环_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

最新文章

  1. 2022-2028年中国医养结合模式深度调研及投资前景预测报告
  2. python中json模块_Python使用内置json模块解析json格式数据的方法
  3. 【深度学习】基于Torch的Python开源机器学习库PyTorch卷积神经网络
  4. 锻炼能降低13种癌症风险
  5. 线性支持向量机完全理解版
  6. JVM调优总结(一)
  7. 判断随机抽取代码_问卷调查:定量研究中的抽样问题(2)- 非随机抽样介绍
  8. vscode浏览器扩展(图文教程) - 设置篇
  9. “色情机器”改掉手机PIN码 勒索安卓设备用户
  10. Java静态代理详解
  11. html中加号实体,纯css实现加号“+”效果(代码示例)
  12. VirtualXposed框架里点权限管理-XPrivacyLua下载安装失败
  13. 惊呆了!无聊感可激发创造力
  14. java web西蒙购物网 ——测试(test)
  15. 中华经典选记-《庄子集释》卷六下《外篇·秋水》
  16. 中国股神—林园炒股秘籍
  17. 2021年全球与中国腰椎间盘突出行业市场规模及发展前景分析
  18. 【嵌入式开发】手把手教你4418/6818开发板屏幕修改 本文转自迅为: http://www.topeetboard.com 开发平台:iTOP-4418/6818开发板 44186818屏幕
  19. RATER指数(转载)
  20. dataGrip导出sql脚本

热门文章

  1. dell10代cpu装linux,戴尔OptiPlex 7080MT装win7系统及bios设置(完美支持10代cpu)
  2. Web学习的亿点细节---亿点点୧(๑•̀⌄•́๑)૭碉堡了
  3. WPS文档协作的局域网搭建协作平台
  4. 人体红外传感器简明教程
  5. c++中的虚指针和虚表
  6. Acer 电脑型号名称 : Aspire S40-51 TPM2.0解锁工具
  7. how2j:学习笔记
  8. 基于STM32三路超声波避障小车
  9. 解决java “错误:编码GBK的不可映射字符 (0xBD)“原创
  10. linux系统常用命令