前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11月10日python爬虫分析网页的模块lxml和Beautiful Soup

11月10日python爬虫分析网页的模块lxml和Beautiful Soup

作者头像
武军超
发布2019-02-25 15:13:48
9290
发布2019-02-25 15:13:48
举报

unicode是字符集,不是编码方式

ajax返回的是json字符串,json字符是类字典的形式,里面是键值对

format自动排列 # 定义文件存储的位置,原始的定义要改变的地方是定义在字符串中的 fileName = 'g:/spider/poetry/poetry{0}.html' f = open(fileName.format(z), "wb")

for 循环的结果如果在外边打印的话只能打印最后一个结果,如果想打印全部的话必须要把print放在for循环里面

使用requests获得网页对象html之后,如果乱码: 1. html.encoding = 'gb2312'  # 将下载结果用gb2312编码 print(html.text)            # 然后以文本的形式打印出来

2. html = r.content   # 先将下载的返回结果转换成二进制    html =str(html, "gb2312")   # 然后转换成以gb2312编码字符串    print(html) lxml和Beautiful Soup都是用于解析网页的第三方模块, lxml比Beautiful Soup解析速度更快,并且lxml是用C语言编写的,Python 标准库中自带了 xml 模块,但是性能不够好,而且缺乏一些人性化的 API, 相比之下,第三方库 lxml 是用 Cython 实现的,而且增加了很多实用的功能,可谓爬虫处理网页数据的一件利器  lxml 大部分功能都存在 lxml.etree中    Beautiful Soup的用法:  1.先转换成soup对象,然后可以用find(只返回一个)和find_all(返回所有)进行匹配 from bs4 import  BeautifulSoup broken_html ='<ul class=country> <li>Area</li> <li>Population</ul>' soup = BeautifulSoup(broken_html,'html.parser') fixed_html = soup.prettify()

print(fixed_html)

ul = soup.find('ul', attrs={'class': 'country'}) print(ul) print(ul.find('li'))  # 只返回第一个 print(ul.find_all('li'))  lxml的用法:  网页下载下来以后是个字符串的形式,如果是一个破损的代码,可以用一下的方式补全:  import lxml.html broben_html = "<ul class=country> <li>Area <li>Population</ul>" tree = lxml.html.fromstring(broben_html) fixed_html = lxml.html.tostring(tree,pretty_print=True) print(fixed_html) 使用etree.fromstring(str)构造一个 etree._ElementTree对象 使用 etree.tostring(t)返回一个字符串

lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高

lxml支持两种查找信息方式:xpath和css选择器

XPath,全称XML Path   Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索 

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。 /text() 是用来读取内容的 XPath 实在太强大了,在定位元素方面绝对是秒杀 CSS 选择器

css选择器: 基本和CSS选择器的用法一样 div p 是选择<div>元素内的所有<p>元素 div > p 是选择<div>元素下的直接子元素p

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档