该笔记主要用于整理在进行python爬虫学习中笔者认为比较重要的笔记,主要来自于bilibili和几本入门书籍中的内容,篇幅有限,具体示例可查看bilibili等资源和相关书籍。
一 xpath解析
xpath是进行xml解析的工具,可以直接读取xml文件中的信息,html是xml的一个子集。
from lxml import etree
# 或者
from lxml import html
etree = html.etree
爬取.html数据
加载数据
et = etree.HTML(pageSource) # 返回element对象
提取内容
result = et.xpath("/html") # 从html的根节点进行查找
result = et.xpath("/html/body") # 中间的/表示一层html节点
result = et.xpath("/html/body/span")
result = et.xpath("/html/body/span/text()") # text()提取标签内的文本
# <li><a href="http://www.baidu.com">百度</a></li> 这段html代码中href属性表示超链接的url,当网页中的文字被点击时触发的url,百度时展示在页面上的文字
result = et.xpath("html/body/*/li/a/text()") # *表示任意字符,通配符
result = et.xpath("/html/body/*/li/a/@href") # 获取标签内的属性值,@表示获取属性,后跟属性名
result = et.xpath("//a/@href") # //表示任意位置 //li/a/@href
result = et.xpath("//div[@class='job']/text()") # 根据属性限定,[]里的内容限定这一节点下的属性值,注意单双引号的使用
result = et.xpath("html/body/ul/li") # 返回的也是element元素
for item in result:
href = item.xpath("./a/@href")[0] # .表示当前元素 [0]表示列表输出取第一个,实际上列表中只有要给元素,但会以列表形式输出
text = item.xpath("./a/text()")[0]
二 代码实战
获取某网站的源代码并提取对应的超链接。
# 获取页面中的超链接
# 导入所需的库
import requests
from lxml import etree
# 获取页面源代码
url = "xxxxx"
resp = requests.get("")
resp.encoding = 'utf-8' # 'gdk'
print(resp.text) # 检查源代码获取是否有问题
et = etree.HTML(resp.text)
suburl = et.xpath("//ul[@class = '限定']/li/a/@href") # 获取的有可能没有域名,所以在进行处理时需要加域名
domain = "https://www.xxxx.cn" # 域名
for item in suburl:
urls = domain + item
print(url) # 获取的url可以输入网页直接打开
xpath适合提取节点标签,正则适合处理大段的字符串。