Python网页解析器使用实例详解
python 网页解析器
1、常见的python网页解析工具有:re正则匹配、python自带的html.parser模块、第三方库BeautifulSoup(重点学习)以及lxm库。
2、常见网页解析器分类
(1)模糊匹配 :re正则表达式即为字符串式的模糊匹配模式;
(2)结构化解析: BeatufiulSoup、html.parser与lxml,他们都以DOM树结构为标准,进行标签结构信息的提取。
3.DOM树解释:即文档对象模型(Document Object Model),其树形标签结构,请见下图。
所谓结构化解析,就是网页解析器它会将下载的整个HTML文档当成一个Doucment对象,然后在利用其上下结构的标签形式,对这个对象进行上下级的标签进行遍历和信息提取操作。
# 引入相关的包,urllib与bs4,是获取和解析网页最常用的库 from urllib.request import urlopen from bs4 import BeautifulSoup # 打开链接 html=urlopen("https://www.datalearner.com/website_navi") # 通过urlopen获得网页对象,将其放入BeautifulSoup中,bsObj存放的目标网页的html文档 bsObj=BeautifulSoup(html.read()) print(bsObj)
# soup = BeautifulSoup(open(url,'r',encoding = 'utf-8'))
import requests from bs4 import BeautifulSoup headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36','referer':"www.mmjpg.com" } all_url = 'http://www.mmjpg.com/' #'User-Agent':请求方式 #'referer':从哪个链接跳转进来的 start_html = requests.get(all_url, headers=headers) #all_url:起始的地址,也就是访问的第一个页面 #headers:请求头,告诉服务器是谁来了。 #requests.get:一个方法能获取all_url的页面内容并且返回内容。 Soup = BeautifulSoup(start_html.text, 'lxml') #BeautifulSoup:解析页面 #lxml:解析器 #start_html.text:页面的内容
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python网页解析利器BeautifulSoup安装使用介绍
python解析网页,无出BeautifulSoup左右,此是序言 安装 BeautifulSoup4以后的安装需要用eazy_install,如果不需要最新的功能,安装版本3就够了,千万别以为老版本就怎么怎么不好,想当初也是千万人在用的啊.安装很简单 复制代码 代码如下: $ wget "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz" $ tar zxvf B
-
Python读取本地文件并解析网页元素的方法
如下所示: from bs4 import BeautifulSoup path = './web/new_index.html' with open(path, 'r') as f: Soup = BeautifulSoup(f.read(), 'lxml') titles = Soup.select('ul > li > div.article-info > h3 > a') for title in titles: print(title.text) 输出: Sardinia
-
python+django加载静态网页模板解析
接着前面Django入门使用示例 今天我们来看看Django是如何加载静态html的? 我们首先来看一看什么是静态HTML,什么是动态的HTML?二者有什么区别? 静态HTML指的是使用单纯的HTML或者结合CSS制作的包括图片.文字等的只供用户浏览但不包含任何脚本.不含有任何交互功能的网页! 动态的HTML指的是网页不仅提供给用户浏览,网页本身还有交互功能,存在着在脚本如JAVASCRIPT,并利用某种服务器端语言如PHP等实现如用户注册,用户登录,上传文件,下载文件等功能 接下来,了解下加载
-
Python 网页解析HTMLParse的实例详解
Python 网页解析HTMLParse的实例详解 使用python将网页抓取下来之后,下一步我们就应该解析网页,提取我们所需要的内容了,在python里提供了一个简单的解析模块HTMLParser类,使用起来也是比较简单的,解析语法没有用到XPath类似的简洁模式,但新手用起来还是比较容易的,看下面的例子: 现在一个模拟的html文件: <html> <title id='main' mouse='你好'>我是标题</title><body>我是内容<
-
Python爬虫解析网页的4种方式实例及原理解析
这篇文章主要介绍了Python爬虫解析网页的4种方式实例及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存中,这个时候它的内容其实是一堆HTML,然后再对这些HTML内容进行解析,按照自己的想法提取出想要的数据,所以今天我们主要来讲四种在Py
-
python爬取Ajax动态加载网页过程解析
常见的反爬机制及处理方式 1.Headers反爬虫 :Cookie.Referer.User-Agent 解决方案: 通过F12获取headers,传给requests.get()方法 2.IP限制 :网站根据IP地址访问频率进行反爬,短时间内进制IP访问 解决方案: 1.构造自己IP代理池,每次访问随机选择代理,经常更新代理池 2.购买开放代理或私密代理IP 3.降低爬取的速度 3.User-Agent限制 :类似于IP限制 解决方案: 构造自己的User-Agent池,每次访问随机选择 5.
-
Python大数据之使用lxml库解析html网页文件示例
本文实例讲述了Python大数据之使用lxml库解析html网页文件.分享给大家供大家参考,具体如下: lxml是Python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree ,html5lib ,beautfulsoup 等库. 使用lxml前注意事项:先确保html经过了utf-8解码,即code =html.decode('utf-8', 'ignore'),否则会出现解析出错情况.因为中文被编码成utf-8之后变成 '/
-
Python requests获取网页常用方法解析
这篇文章主要介绍了Python requests获取网页常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要记录使用 requests 模块获取网页源码的方法 class Crawler(object): """ 采集类 """ def __init__(self, base_url): self._base_url = base_url self._cookie = None se
-
Python网页解析器使用实例详解
python 网页解析器 1.常见的python网页解析工具有:re正则匹配.python自带的html.parser模块.第三方库BeautifulSoup(重点学习)以及lxm库. 2.常见网页解析器分类 (1)模糊匹配 :re正则表达式即为字符串式的模糊匹配模式: (2)结构化解析: BeatufiulSoup.html.parser与lxml,他们都以DOM树结构为标准,进行标签结构信息的提取. 3.DOM树解释:即文档对象模型(Document Object Model),其树形标签结
-
python函数装饰器用法实例详解
本文实例讲述了python函数装饰器用法.分享给大家供大家参考.具体如下: 装饰器经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计, 有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. #! coding=utf-8 import time def timeit(func): def wrapper(a): start = time.clock() func
-
Python上下文管理器全实例详解
Python上下文管理器 简介 最近用到这个,仔细了解了一下,感觉是十分有用的,记录一下 使用场景 当我们需要获取一个临时打开的资源,并在使用完毕后进行资源释放和异常处理,利用try-catch语句可以完成,举个例子. 打开文件: f = None try: print("try") f = open("__init__.py", "r") print(f.read()) except Exception as e: print("ex
-
Python pytest装饰器总结(实例详解)
几个常用装饰器 pytest.ini 配置文件 例子: [pytest] addopts = -v -s --html=py_test/scripts/report/report.html -p no:warnings --reruns=10 testpaths = ./py_test/scripts python_files= test_rerun.py python_classes = Test* python_function = test* xfail_strict = true add
-
python装饰器使用实例详解
这篇文章主要介绍了python装饰器使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python装饰器的作用就是在不想改变原函数代码的情况下,增加新的功能.主要应用了python闭包的概念,现在用1个小例子说明 import time def foo(): time.sleep(1) def bar(): time.sleep(2) def show_time(f): def inner(): start_time = time.t
-
Python 通过URL打开图片实例详解
Python 通过URL打开图片实例详解 不论是用OpenCV还是PIL,skimage等库,在之前做图像处理的时候,几乎都是读取本地的图片.最近尝试爬虫爬取图片,在保存之前,我希望能先快速浏览一遍图片,然后有选择性的保存.这里就需要从url读取图片了.查了很多资料,发现有这么几种方法,这里做个记录. 本文用到的图片URL如下: img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg' 1.用Open
-
Python探索之URL Dispatcher实例详解
URL dispatcher简单点理解就是根据URL,将请求分发到相应的方法中去处理,它是对URL和View的一个映射,它的实现其实也很简单,就是一个正则匹配的过程,事先定义好正则表达式和该正则表达式对应的view方法,如果请求的URL符合这个正则表达式,那么就分发这个请求到这个view方法中. 有了这个base,我们先抛出几个问题,提前思考一下: 这个映射定义在哪里?当映射很多时,如果有效的组织? URL中的参数怎么获取,怎么传给view方法? 如何在view或者是template中反解出UR
-
Python内建模块struct实例详解
本文研究的主要是Python内建模块struct的相关内容,具体如下. Python中变量的类型只有列表.元祖.字典.集合等高级抽象类型,并没有像c中定义了位.字节.整型等底层初级类型.因为Python本来就是高级解释性语言,运行的时候都是经过翻译后再在底层运行.如何打通Python和其他语言之间的类型定义障碍,Python的内建模块struct完全解决了所有问题. 知识介绍: 在struct模块中最最常用的三个: (1)struct.pack:用于将Python的值根据格式符,转换为字符串(因
-
python中的decimal类型转换实例详解
[Python标准库]decimal--定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算. Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模型,即大多数计算机硬件实现的 IEEE 浮点数运算.Decimal 实例可以准确地表示任何数,对其上取整或下取整,还可以对有效数字个数加以限制. Decimal 小数值表示为 Decimal 类的实例.构造函数取一个整数或字符串作为参数.使用
随机推荐
- vue组件父子间通信之综合练习(聊天室)
- 使用 iisweb.vbs start 启动网站的方法
- php中通过数组进行高效随机抽取指定条记录的算法
- Python CSV模块使用实例
- python中异常捕获方法详解
- mysql主从服务器配置特殊问题
- php实现图片添加水印功能
- scrollWidth,clientWidth,offsetWidth的区别
- 提高网页的效率 Use YSlow to know why your web Slow第1/2页
- Lua脚本实现递归删除一个文件夹
- 原生js的数组除重复简单实例
- linux下查看swap分区被哪些进程占用实现脚本
- Linux Apache+MySQL+PHP
- c++实现二叉查找树示例
- js的函数的按值传递参数(实例讲解)
- 在nginx上部署vue项目(history模式)的方法
- 14张图看懂什么是区块链技术
- 基于SpringMVC接受JSON参数详解及常见错误总结
- JS 正则表达式从地址中提取省市县
- 解决django后台样式丢失,css资源加载失败的问题