python网页数据抓取(python网络爬虫(上)概述预备知识、如何处理登录问题)

优采云 发布时间: 2022-02-14 11:10

  python网页数据抓取(python网络爬虫(上)概述预备知识、如何处理登录问题)

  石斛2020-11-24 305次浏览Python原版网络爬虫(上)

  关键词:

  登山在山里充满爱,在海里看海充满意义。本文章主要介绍Python网络爬虫相关知识(上),希望对大家有所帮助。

  python网络爬虫概述(上)

  初步知识

  1、如何处理大量(JS)的页面以及如何处理登录问题

  2、屏幕抓取、数据挖掘、网络收获、网络爬虫、网络爬虫、机器人

  3、网络爬虫的优势:一、同时处理上千甚至上百万个网页;二、不同于传统搜索引擎,可以获得更准确的数据信息;三、 相比API取数据,网络爬虫更灵活

  4、网络爬虫用于:市场预测、机器语言翻译、医学诊断、新闻网站、文章、健康论坛、宏观经济学、生物基因、国际关系、健康论坛、艺术领域以及数据采集和分析的其他方面(分类和汇总)

  5、网络爬虫涉及:数据库、网络服务器、HTTP协议、html语言(HyperTextMarkupLanguage)、网络安全、图像处理、数据科学等负面知识

  6、网页的组成:HTML文本格式层、CSS样式层(CascadingStyleSheets)、javaScript执行层、图像渲染层

  7、JavaScript思路:(1)学习C语言的基本语法,(2)学习Java语言的数据类型和内存管理,(3)学习Scheme语言,改进功能到“头等舱”(first class)的状态,(4)借鉴自Self语言,使用基于原型的继承机制。JavaScript组成:(1)核心(ECMAScript) ),描述语言的语法和基本对象,(2)文档对象模型(DOM),描述处理网页内容的方法和接口,(3)浏览器对象模型(BOM),它描述了与浏览器的交互 .JavaScript 库的方法和接口:jQuery、Prototype、MooTools 等。

  8、HTML文本结构:HTML的结构是树状结构,在内存中形成一棵树

  9、HTML只负责文档的结构和内容,表达完全交给CSS。基本 CSS 语法:选择器 { 属性:值;属性:值;属性:值;} (tagAttributes)

  10、浏览器加载的网页需要加载很多相关的资源文件,包括:图片文件、JavaScript文件、CSS文件、链接其他网页的URL地址信息等。

  11、浏览器加载服务器资源,根据标签如

  

  ,它创建一个数据包,指示操作系统向服务器发送请求,然后将获取的数据解释为图像。浏览器就是代码,代码可以分解成许多基本组件,可以根据需要重写、重用和修改

  12、.get_text():清除HTML文档中所有无用的信息,如tagName、超链接、段落等。通常在准备打印、存储、操作最终数据时,使用 .get_text()!

  开发工具及原理分析1、urllib标准库,urllib.request导入urlopen

  1.1、urllib标准库的功能:网页请求数据、处理cookies、更改请求头和用户代理元数据的功能

  1.2、urlopen函数功能:打开和读取从网络上获取的远程对象,可以读取HTML文件、图片文件,以及任何其他文件流

  2、BeautifulSoup 库

  2.1、XML 是一种可扩展的标记语言,而 HTML 是一种超文本标记语言:XML 语法更严格,HTML 语法更宽松;XML主要用于数据格式化存储,HTML主要用于编辑网页;XML 语言是对超文本标记语言的补充;为不同的目的而设计,XML被设计用来传输和存储数据,它的重点是数据的内容,HTML被设计用来显示数据,它的重点是数据的外观

  2.2、BeautifulSoup 库通过定位 HTML 标签来格式化和组织复杂的网页信息;通过易于使用的 python 对象显示 XML 结构信息

  2.3、BeautifulSoup 库创建 BeautifulSoup 对象:bs=BeautifulSoup(html.read(), 'html.parser'), bs.HTML 标签 (html.title, html.body.h1、html.body.div)

  第一个参数:BeautifulSoup 对象所基于的 HTML 文本

  第二个参数:BeautifulSoup 对象创建对象的解释器,'html.parser', 'lxml', 'html5lib'

  1、'lxml', 'html5lib' 优点:容错,如果HTML标签(tagName)异常:未闭合,嵌套错误,缺少head标签,缺少body标签,'lxml','html5lib'可以优化

  2、'html.parser', 'lxml', 'html5lib' 三个解释器爬网速度不同,'lxml'>'html.parser'>'html5lib',但关键问题和瓶颈不是宽带速度爬行速度!

  2.4、网络爬虫异常,因为网络数据格式异常,网络爬虫异常:一、urlopen()有问题;二、print(bs .h1)有问题

  一、urlopen() 的问题:

  1、服务器上不存在网页:HTTPError: '404 PageNot Found', '505 Internet Server Error'

  2、服务器不存在:URLError

  二、print(bs.h1)有问题:

  1、BeautifulSoup 对象标签异常,不存在!无--->属性错误!由于 BeautifulSoup 对象在标签不存在时调用它,所以它会返回 None。如果调用None下面的子标签,就会出现AttributeError,所以需要避免这两种情况的异常!

  异常处理思路:try...except...else...添加异常检查点。

  from urllib.request import urlopen

from urllib.error import HTTPError

from bs4 import BeautifulSoup

def getTitle(url):

try:

html = urlopen(url)

except HTTPError as e:

return None

try:

bsObj = BeautifulSoup(html.read(), "lxml")

title = bsObj.body.h1

except AttributeError as e:

return None

return title

title = getTitle("http://www.pythonscraping.com/pages/page1.html")

if title == None:

print("Title could not be found")

else:

print(title)

  3、HTML解析:BeautifulSoup,正则表达式

  3.1、网页爬虫代码增强灵活性和可读性的思路:

  1、方向一、比较网页PC版和APP版,比较PC版的HTML风格和APP版的HTML风格。选择更适用的版本,修改请求头状态,获取对应版本的状态。

  2、方向二、JavaScript文件,通过网页加载的JavaScript文件中收录的信息

  3、方向三、URL链接收录网页的标题,直接从URL链接获取目标信息

  4、方向四、目标信息的来源页面

  3.2、BeautifulSoup 用途:属性值搜索标签、标签组、CSS 语法中的导航树(BeautifulSoup 标签树导航)

  1、bs.tagName

  2、bs.find_all(tagName, tagAttributes)

  3、写一个网络爬虫:scrapy

  4、存储目标信息:mysql

  应用示例

  至此,这篇关于Python网络爬虫(上)的文章就讲完了。如果您的问题无法解决,请参考以下文章:

  相关文章

  如何使用Python网络爬虫抓取微信朋友圈动态(上)

  003 Python网络爬虫和信息提取网络爬虫的“海盗”

  Python爬虫入门

  Python爬虫难学吗?容易学吗?

  Python爬虫编程思路:网络爬虫基本原理

  Web Crawler 入门:您的第一个爬虫项目(请求库)

  爬虫学习06.Python网络爬虫请求模块

  Python网络爬虫:空姐网尴尬xxx结果图及源码

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线