Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

这篇具有很好参考价值的文章主要介绍了Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

逆向分析爬取动态网页

了解静态网页和动态网页区别

1.判断静态网页

 2.判断动态网页

 逆向分析爬取动态网页

使用Selenium库爬取动态网页

安装Selenium库以及下载浏览器补丁

页面等待

 页面操作

1.填充表单

2.执行JavaScript

元素选取

Selenium库的find_element的语法使用格式如下。 

1.单个元素查找

2.多个元素查找 

预期的条件

 结果分析

了解MongoDB数据库和MySQL数据库的区别

​编辑将数据存储入MongoDB数据库

1.建立连接 

2.获取数据库

3.获取一个集合

总结        


逆向分析爬取动态网页

了解静态网页和动态网页区别

1.判断静态网页

在浏览器中打开网站“http://www.tipdm.com”,按“F12”键调出Chrome开发者工具或者单击“更多工具”选项中的“开发者工具”选项。Chrome开发者工具中的元素面板上显示的是浏览器执行JavaScript之后生成的HTML源码。找到解决方案的第一条数据对应的HTML源码,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

还有另一种方法查看源码,右键单击鼠标页面,选择“查看页面源代码”,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库 

 得到服务器直接返回的HTML源码,找到解决方案的第一条数据的信息,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

 2.判断动态网页

在浏览器中打开网站“http://www.ptpress.com.cn”,按“F12”键调出Chrome开发者工具,找到“互联网+智慧城市 核心技术及行业应用”的HTML信息,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

 在浏览器呈现的网页中,右键单击页面,单击“查看页面源代码”选项,在弹出的HTML源码中,查找“互联网+智慧城市 核心技术及行业应用”关键字,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

 逆向分析爬取动态网页

在确认网页是动态网页后,需要获取从网页响应中由JavaScript动态加载生成的信息,在Chrome浏览器中爬取“http://www.ptpress.com.cn”网页的信息,步骤如下。

“F12”键打开“http://www.ptpress.com.cn”网页的Chrome开发者工具,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

 单击网络面板后,发现有很多响应。在网络面板中XHR是Ajax中的概念,表示XML-HTTP-request,一般Javascript加载的文件隐藏在JS或者XHR。通过查找发“http://www.ptpress.com.cn”网页。

“新书”模块的信息在XHR的Preview标签中有需要的信息。在网络面板的XHR中,查看“/bookinfo”资源的Preview信息,可以看到网页新书的HTML信息,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

若需要爬取“http://www.ptpress.com.cn”网页标题信息,则步骤如下。

单击“/bookinfo”资源的Headers标签,找到“Request URL”信息,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库 

打开“Request URL”URL网址信息,找到需要爬取的信息,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库 

爬取“http://www.ptpress.com.cn”首页新书模块的书名、作者和价格,如代码 4‑1所示。 

使用Selenium库爬取动态网页

安装Selenium库以及下载浏览器补丁

以Chrome浏览器的chromedrive补丁为例,在安装好Selenium 3.9.0之后,下载并安装chromedrive补丁的步骤如下。

在Selenium官网下载对应版本的补丁。下载如图所示的“Google Chrome Driver 2.36”文件,根据操作系统选择chromedrive文件。

将下载好的chromedrive.exe文件,存放至python安装根目录(与python.exe文件同一目录)即可。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

页面等待

Selenium Webdriver提供两种类型的等待——隐式和显式。显式的等待使网络驱动程序在继续执行之前等待某个条件的发生。隐式的等待使WebDriver在尝试定位一个元素时,在一定的时间内轮询DOM。在爬取“http://www.ptpress.com.cn/search/books”网页搜索“Python编程”关键词过程中,用到了显示等待,本节主要介绍显示等待。显式等待是指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常,在登“http://www.ptpress.com.cn/search/books”网页等待10秒。

WebDriverWait函数是默认每500毫秒调用一次ExpectedCondition,直到成功返回。ExpectedCondition的成功返回类型是布尔值,对于所有其他ExpectedCondition类型,则返回True或非Null返回值。如果在10秒内不能发现元素返回,就会在抛出TimeoutException异常。 WebDriverWait的语法使用格式如下。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

 页面操作

1.填充表单

HTML表单包含了表单元素,而表单元素指的是不同类型的input元素、复选框、单选按钮、提交按钮等。填写完表单后,需要提交表单。定位“搜索”按钮并复制该元素的selector,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

2.执行JavaScript

Selenium库中的execute_script方法能够直接调用JavaScript方法来实现翻页到底部、弹框等操作。比如在“http://www.ptpress.com.cn/search/books”网页中通过JavaScript翻到页面底部,并弹框提示爬虫。

元素选取

在页面中定位元素有多种策略。Selenium库提供了如表所示的方法来定位页面中的元素,使用find_element进行元素选取。在单元素查找中使用到了通过元素ID进行定位、通过XPath表达式进行定位、通过CSS选择器进行定位等操作。在多元素查找中使用到了通过CSS选择器进行定位等操作。

定位一个元素

定位多个元素

含义

find_element_by_id

find_elements_by_id

通过元素ID进行定位

find_element_by_name

find_elements_by_name

通过元素名称进行定位

find_element_by_xpath

find_elements_by_xpath

通过XPath表达式进行定位

find_element_by_link_text

find_elements_by_link_text

通过完整超链接文本进行定位

find_element_by_partial_link_text

find_elements_by_partial_link_text

通过部分超链接文本进行定位

find_element_by_tag_name

find_elements_by_tag_name

通过标记名称进行定位

find_element_by_class_name

find_elements_by_class_name

通过类名进行定位

find_element_by_css_selector

find_elements_by_css_selector

通过CSS选择器进行定位

Selenium库的find_element的语法使用格式如下。 

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

1.单个元素查找

获取“http://www.ptpress.com.cn/search/books”响应的网页搜索框架元素,如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

2.多个元素查找 

查找“http://www.ptpress.com.cn/search/books”网页第一行多个信息,复制到selector的信息是“#nav”如图所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

预期的条件

在自动化Web浏览器时,不需要手动编写期望的条件类,也不必为自动化创建实用程序包,Selenium库提供了一些便利的判断方法如表 4‑2所示,在爬取“http://www.ptpress.com.cn/search/books”网页搜索“Python编程”关键词的过程中,用到了element_to_be_clickable方法、元素是否可点击等判断方法。

方法

作用

title_is

标题是某内容

title_contains

标题包含某内容

presence_of_element_located

元素加载出,传入定位元组,如(By.ID, 'p')

visibility_of_element_located

元素可见,传入定位元组

visibility_of

传入元素对象

presence_of_all_elements_located

所有元素加载出

text_to_be_present_in_element

某个元素文本包含某文字

text_to_be_present_in_element_value

某个元素值包含某文字

方法

作用

frame_to_be_available_and_switch_to_it frame

加载并切换

invisibility_of_element_located

元素不可见

element_to_be_clickable

元素可点击

staleness_of

判断一个元素是否仍在DOM,可判断页面是否已经刷新

element_to_be_selected

元素可选择,传元素对象

element_located_to_be_selected

元素可选择,传入定位元组

element_selection_state_to_be

传入元素对象以及状态,相等返回True,否则返回False

element_located_selection_state_to_be

传入定位元组以及状态,相等返回True,否则返回False

alert_is_present

是否出现Alert

 结果分析

了解MongoDB数据库和MySQL数据库的区别

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB中的概念和MySQL中的概念进行对比,如表所示。

SQL概念

MongoDB概念

说明

database

database

数据库

table

collection

数据库表∕集合

row

document

数据库行∕文档

column

field

数据字段列∕域

index

index

索引

primary key

primary key

主键

MongoDB具有独特操作语句,与MySQL使用传统的sql语句不同。MongoDB与MySQL基本操作命令的区别如表所示。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库将数据存储入MongoDB数据库

1.建立连接 

pymongo是Python用于操作MongoDB的模块,在导入pymongo模块之前,需要先使用pip命令安装pymongo模块,安装成功之后,导入pymongo模块,然后建立连接。MongoDB连接字符串的格式如下。

python爬取动态网页selenium,Python网络爬虫,javascript,前端,java,python,mongodb,数据库

2.获取数据库

MongoDB的一个实例可以支持多个独立的数据库。在使用pymongo模块时,可以使用MongoClient实例上的属性的方式来访问数据库,如果数据库名称使用属性方式访问无法正常工作(如:python-db),也可以使用字典方式访问。

3.获取一个集合

集合是存储在MongoDB中的一组文档,可以类似于关系数据库中的表。在pymongo模块中获取集合的方式与获取数据库一样,或者使用字典方式获取集合。

4.插入文档

数据在MongoDB中是以JSON类文件的形式保存起来的,而且存储到MongoDB数据库中的数据类型必须是{key:value}型的。在pymongo模块中使用inset_one方法插入文档,将4.1.2小节爬取到的新书信息存储到MongoDB数据库中。

总结        

本章介绍了两种方法爬取动态网页,分别是逆向分析爬取和通过Selenium爬取,同时也介绍了如何将爬取到的数据,储存到MongoDB中,具体内容如下。

通过源码比对,实现了静态网页与动态网页的区分。

使用逆向分析技术爬取网站“http://www.ptpress.com.cn”首页新书信息。

使用Selenium爬取网站“http://www.ptpress.com.cn/search/books”中的以“python编程”为关键词的信息。

将爬取到的数据,储存至MongoDB数据库。

 文章来源地址https://www.toymoban.com/news/detail-606755.html

到了这里,关于Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Python的网络爬虫爬取天气数据可视化分析

    目录 摘 要 1 一、 设计目的 2 二、 设计任务内容 3 三、 常用爬虫框架比较 3 四、网络爬虫程序总体设计 3 四、 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程分析 5 爬虫基本流程 5 发起请求 5 获取响应内容 5 解析数据 5 保存数据 5 Request和Response 5 Request 5

    2024年02月08日
    浏览(52)
  • 〖Python网络爬虫实战㉔〗- Ajax数据爬取之Ajax 分析案例

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月07日
    浏览(72)
  • python爬虫进阶篇:Scrapy中使用Selenium模拟Firefox火狐浏览器爬取网页信息

    接着上一篇的笔记,Scrapy爬取普通无反爬、静态页面的网页时可以顺利爬取我们要的信息。但是大部分情况下我们要的数据所在的网页它是动态加载出来的(ajax请求后传回前端页面渲染、js调用function等)。这种情况下需要使用selenium进行模拟人工操作浏览器行为,实现自动化

    2024年02月04日
    浏览(78)
  • 如何使用 Python 爬虫抓取动态网页数据

    随着 Web 技术的不断发展,越来越多的网站采用了动态网页技术,这使得传统的静态网页爬虫变得无能为力。本文将介绍如何使用 Python 爬虫抓取动态网页数据,包括分析动态网页、模拟用户行为、使用 Selenium 等技术。 在进行动态网页爬取之前,我们需要先了解动态网页和静

    2023年04月24日
    浏览(74)
  • python爬虫 爬取网页图片

    目录 一:爬虫基础 二:安装html解析的python工具 三:爬取网页图片 爬虫基本过程: 1.请求标头 headers 2.创建一个会话 requests.Session 3.确定请求的路径 4.根据路径获取网页资源(HTML文件) 5.解析html文件BeautifulSoup div a 标签 获取对应的图片 6.建立网络连接进行下载  创建出下载的图

    2024年02月02日
    浏览(63)
  • Python爬虫基础(三):使用Selenium动态加载网页

    Python爬虫基础(一):urllib库的使用详解 Python爬虫基础(二):使用xpath与jsonpath解析爬取的数据 Python爬虫基础(三):使用Selenium动态加载网页 Python爬虫基础(四):使用更方便的requests库 Python爬虫基础(五):使用scrapy框架 (1)Selenium是一个用于Web应用程序测试的工具。

    2024年02月06日
    浏览(58)
  • 【数据可视化】通过使用网络爬虫对数据爬取并进行可视化分析

      本次项目所爬取的网页为柳州职业技术学院电子信息工程学院的超星学习通课程中心。在该网页中可以查看到电子信息工程学院历年的超星课程创建情况,还可以进入到课程界面查看相应的教学资源。   在该网页中,详细记录了课程序号、课程名称、课程链接、所属院

    2024年02月04日
    浏览(51)
  • Python网页爬虫爬取起点小说——re解析网页数据

    !!注意:我们获取到的网页响应数据,可能会与网页源代码中呈现的格式不同。因为有些网页文件是用JavaScript加载的,浏览器会自动将其解析成html文档格式,而我们获取到的内容是JavaScript格式的文档。所以获取到响应数据之后先要查看内容是否与网页源码中的一致,不一

    2024年02月04日
    浏览(65)
  • 【头歌】——数据分析与实践-python-网络爬虫-Scrapy爬虫基础-网页数据解析-requests 爬虫-JSON基础

    第1关 爬取网页的表格信息 第2关 爬取表格中指定单元格的信息 第3关 将单元格的信息保存到列表并排序 第4关 爬取div标签的信息 第5关 爬取单页多个div标签的信息 第6关 爬取多个网页的多个div标签的信息 第1关 Scarpy安装与项目创建 第2关 Scrapy核心原理 第1关 XPath解析网页 第

    2024年01月22日
    浏览(59)
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据

    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Python 中最常用的爬虫库之一,它能够帮助我们快速、简单地解析 HTML 和 XML 文档,从而

    2024年02月04日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包