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
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有