当前位置:首页 » 编程语言 » pythondom解析

pythondom解析

发布时间: 2022-11-15 00:27:52

1. python编程网页爬虫工具集介绍

【导语】对于一个软件工程开发项目来说,一定是从获取数据开始的。不管文本怎么处理,机器学习和数据发掘,都需求数据,除了通过一些途径购买或许下载的专业数据外,常常需求咱们自己着手爬数据,爬虫就显得格外重要,那么Python编程网页爬虫东西集有哪些呢?下面就来给大家一一介绍一下。

1、 Beautiful Soup

客观的说,Beautifu Soup不完满是一套爬虫东西,需求协作urllib运用,而是一套HTML / XML数据分析,清洗和获取东西。

2、Scrapy

Scrapy相Scrapy, a fast high-level screen scraping and web crawling framework
for
Python.信不少同学都有耳闻,课程图谱中的许多课程都是依托Scrapy抓去的,这方面的介绍文章有许多,引荐大牛pluskid早年的一篇文章:《Scrapy
轻松定制网络爬虫》,历久弥新。

3、 Python-Goose

Goose最早是用Java写得,后来用Scala重写,是一个Scala项目。Python-Goose用Python重写,依靠了Beautiful
Soup。给定一个文章的URL, 获取文章的标题和内容很便利,用起来非常nice。

以上就是Python编程网页爬虫工具集介绍,希望对于进行Python编程的大家能有所帮助,当然Python编程学习不止需要进行工具学习,还有很多的编程知识,也需要好好学起来哦,加油!

2. 用python解析XML格式的字符串

你这样的数据还没有用正则来的简单
r'(?<=\<Result\>)(.+?)(?=\</Result\>)'

用XML会比较麻烦:
dom1 = minidom.parseString(xml)
result = dom1.getElementsByTagName("Result")
result = result[0].childNodes[0].nodeValue

3. python十大必学模块是什么

这个不能一概而论的,据说python目前高达27万+个库,看你学习的方向必学模块也有不同,简单列举:

1、网络通用方面:

  • urllib-网络库

  • requests-网络库

  • pycurl– 网络库

  • httplib2– 网络库

  • RoboBrowser– 浏览网页

  • MechanicalSoup-一个与网站自动交互Python库

  • socket– 底层网络接口

    2、爬虫方面:

  • grab– 爬虫框架

  • scrapy– 网络爬虫框架,不支持Python3

  • pyspider–爬虫系统。

  • cola– 爬虫框架

  • portia– 可视化爬虫

  • 3、HTML/XML解析方面:

  • lxml– 高效HTML/ XML处理库

  • cssselect– 解析DOM树和CSS选择器。

  • pyquery– 解析DOM树和jQuery选择器。

  • html5lib– 根据WHATWG规范生成HTML/ XML文档的DOM

  • feedparser– 解析RSS/ATOM feeds。

  • MarkupSafe– 为XML/HTML/XHTML提供了安全转义的字符串。

  • xhtml2pdf– 将HTML/CSS转换为PDF。

  • untangle– XML文件转Python对象

  • 4、文件处理方面:

  • xpinyin– 将中国汉字转为拼音

  • tablib– 数据导出为XLS、CSV、JSON、等格式的模块

  • textract– 从文件中提取文本

  • messytables– 解析表格数据

  • rows– 常用数据接口

  • Office

  • python-docx– 读取,查询和修改docx文件

  • xlwt/xlrd– 从Excel文件读取写入数据和格式信息

  • PDF

  • Markdown

  • Python-Markdown– 一个用Python实现的John Gruber的Markdown。

4. python怎么获取网页上html dom element 对象

可以使用Python自带的HTMLParser模块解析HTML文档:
HTMLParser的核心模块是org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。这个类有下面几个构造函数:
public Parser ();
public Parser (Lexer lexer, ParserFeedback fb);
public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;
public Parser (String resource, ParserFeedback feedback) throws ParserException;
public Parser (String resource) throws ParserException;
public Parser (Lexer lexer);
public Parser (URLConnection connection) throws ParserException;
和一个静态类public static Parser createParser (String html, String charset);

5. python怎样将网页内容解析成DOM对象

可以使用Python自带的HTMLParser模块解析HTML文档:
HTMLParser的核心模块是org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。这个类有下面几个构造函数:
public Parser ();
public Parser (Lexer lexer, ParserFeedback fb);
public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;
public Parser (String resource, ParserFeedback feedback) throws ParserException;
public Parser (String resource) throws ParserException;
public Parser (Lexer lexer);
public Parser (URLConnection connection) throws ParserException;
和一个静态类public static Parser createParser (String html, String charset);

6. python 解析xml需要什么模块

Python的标准库中,提供了6种可以用于处理XML的包。

(1)xml.dom

xml.dom实现的是W3C制定的DOM API。如果你习惯于使用DOM API或者有人要求这这样做,可以使用这个包。不过要注意,在这个包中,还提供了几个不同的模块,各自的性能有所区别。

DOM解析器在任何处理开始之前,必须把基于XML文件生成的树状数据放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。

(2)xml.dom.minidom

xml.dom.minidom是DOM API的极简化实现,比完整版的DOM要简单的多,而且这个包也小的多。那些不熟悉DOM的朋友,应该考虑使用xml.etree.ElementTree模块。据lxml的作者评价,这个模块使用起来并不方便,效率也不高,而且还容易出现问题。

相关推荐:《Python教程》

(3)xml.dom.pulldom

与其他模块不同,xml.dom.pulldom模块提供的是一个“pull解析器”,其背后的基本概念指的是从XML流中pull事件,然后进行处理。虽然与SAX一样采用事件驱动模型(event-driven processing model),但是不同的是,使用pull解析器时,使用者需要明确地从XML流中pull事件,并对这些事件遍历处理,直到处理完成或者出现错误。

pull解析(pull parsing)是近来兴起的一种XML处理趋势。此前诸如SAX和DOM这些流行的XML解析框架,都是push-based,也就是说对解析工作的控制权,掌握在解析器的手中。

(4)xml.sax

xml.sax模块实现的是SAX API,这个模块牺牲了便捷性来换取速度和内存占用。SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准。它是事件驱动的,并不需要一次性读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。

(5)xml.parser.expat

xml.parser.expat提供了对C语言编写的expat解析器的一个直接的、底层API接口。expat接口与SAX类似,也是基于事件回调机制,但是这个接口并不是标准化的,只适用于expat库。

expat是一个面向流的解析器。您注册的解析器回调(或handler)功能,然后开始搜索它的文档。当解析器识别该文件的指定的位置,它会调用该部分相应的处理程序(如果您已经注册的一个)。该文件被输送到解析器,会被分割成多个片断,并分段装到内存中。因此expat可以解析那些巨大的文件。

(6)xml.etree.ElementTree(以下简称ET)

xml.etree.ElementTree模块提供了一个轻量级、Pythonic的API,同时还有一个高效的C语言实现,即xml.etree.cElementTree。与DOM相比,ET的速度更快,API使用更直接、方便。与SAX相比,ET.iterparse函数同样提供了按需解析的功能,不会一次性在内存中读入整个文档。ET的性能与SAX模块大致相仿,但是它的API更加高层次,用户使用起来更加便捷。

建议:在使用Python进行XML解析时,首选使用ET模块,除非你有其他特别的需求,可能需要另外的模块来满足。

7. python xml.dom.minidom.parse

这个函数不是只打开文件,而是读取整个文件的内容到内存,然后关掉文件。

想释放读取到内存的dom节点,可以调用unlink()函数

示例:

dom1=parse('c:\temp\mydata.xml')
dom1.unlink()

另外,python是有自动内存回收的。如果一个dom节点变量不再被使用,也会自动释放。

8. “python爬虫保姆级教学”urllib的使用以及页面解析

使用urllib来获取网络首页的源码

get请求参数,如果是中文,需要对中文进行编码,如下面这样,如果不编码会报错。

urlencode应用场景:多个参数的时候。如下

为什么要学习handler?

为什么需要代理?因为有的网站是禁止爬虫的,如果用真实的ip去爬虫,容易被封掉。

2.解析技术

1.安装lxml库

2.导入lxml.etree

3.etree.parse() 解析本地文件

4.etree.HTML() 服务器响应文件

5.解析获取DOM元素

1.路径查询

2.谓词查询

3.属性查询

4.模糊查询

5.内容查询

6.逻辑运算

示例:

JsonPath只能解析本地文件。

pip安装:

jsonpath的使用:

示例:

解析上面的json数据

缺点:效率没有lxml的效率高

优点:接口设计人性化,使用方便

pip install bs4 -i https://pypi.douban.com/simple

from bs4 import BeautifulSoup

1.根据标签名查找节点

soup.a.attrs

2.函数

find(‘a’):只找到第一个a标签

find(‘a’, title=‘名字’)

find(‘a’, class_=‘名字’)

find_all(‘a’) :查找到所有的a

find_all([‘a’, ‘span’]) 返回所有的a和span

find_all(‘a’, limit=2) 只找前两个a

obj.string

obj.get_text()【推荐】

tag.name:获取标签名

tag.attrs:将属性值作为一个字典返回

obj.attrs.get(‘title’)【常用】

obj.get(‘title’)

obj[‘title’]

示例:

使用BeautifulSoup解析上面的html

9. 如何用python读取xml文件

一、简介

XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用。它是web发展到一定阶段的必然产物,既具有SGML的核心特征,又有着HTML的简单特性,还具有明确和结构良好等许多新的特性。
python解析XML常见的有三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合,注意xml.dom包里面有许多模块,须区分它们间的不同;二是xml.sax.*模块,它是SAX API的实现,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,这就意味着它可以“在空中”处理庞大数量的的文档,不用完全加载进内存;三是xml.etree.ElementTree模块(简称 ET),它提供了轻量级的Python式的API,相对于DOM来说ET 快了很多,而且有很多令人愉悦的API可以使用,相对于SAX来说ET的ET.iterparse也提供了 “在空中” 的处理方式,没有必要加载整个文档到内存,ET的性能的平均值和SAX差不多,但是API的效率更高一点而且使用起来很方便。
二、详解

解析的xml文件(country.xml):
在CODE上查看代码片派生到我的代码片

<?xml version="1.0"?>
<data>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>


1、xml.etree.ElementTree

ElementTree生来就是为了处理XML,它在Python标准库中有两种实现:一种是纯Python实现的,如xml.etree.ElementTree,另一种是速度快一点的xml.etree.cElementTree。注意:尽量使用C语言实现的那种,因为它速度更快,而且消耗的内存更少。
在CODE上查看代码片派生到我的代码片

try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET


这是一个让Python不同的库使用相同API的一个比较常用的办法,而从Python 3.3开始ElementTree模块会自动寻找可用的C库来加快速度,所以只需要import xml.etree.ElementTree就可以了。
在CODE上查看代码片派生到我的代码片

#!/usr/bin/evn python
#coding:utf-8

try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys

try:
tree = ET.parse("country.xml") #打开xml文档
#root = ET.fromstring(country_string) #从字符串传递xml
root = tree.getroot() #获得root节点
except Exception, e:
print "Error:cannot parse file:country.xml."
sys.exit(1)
print root.tag, "---", root.attrib
for child in root:
print child.tag, "---", child.attrib

print "*"*10
print root[0][1].text #通过下标访问
print root[0].tag, root[0].text
print "*"*10

for country in root.findall('country'): #找到root节点下的所有country节点
rank = country.find('rank').text #子节点下节点rank的值
name = country.get('name') #子节点下属性name的值
print name, rank

#修改xml文件
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country)

tree.write('output.xml')


运行结果:

三、总结
(1)Python中XML解析可用的类库或模块有xml、libxml2 、lxml 、xpath等,需要深入了解的还需参考相应的文档。
(2)每一种解析方式都有自己的优点和缺点,选择前可以综合各个方面的性能考虑。
(3)若有不足,请留言,在此先感谢!

热点内容
二级c语言技巧 发布:2025-01-13 07:54:37 浏览:2
自动充值脚本 发布:2025-01-13 07:48:02 浏览:19
越容易压缩 发布:2025-01-13 07:37:37 浏览:558
ecstore数据库 发布:2025-01-13 07:29:43 浏览:297
手机设置密码忘记了怎么解开 发布:2025-01-13 07:28:29 浏览:21
存储卡交流 发布:2025-01-13 07:16:06 浏览:984
php字符串浮点数 发布:2025-01-13 07:15:28 浏览:999
python排序cmp 发布:2025-01-13 07:09:04 浏览:73
云脚本精灵 发布:2025-01-13 07:03:27 浏览:619
高维访问 发布:2025-01-13 07:03:23 浏览:976