废话不多说,直接进入正题。
一。首先是xpath。
1.官方的来讲就是能在xml树状结构中寻找节点 xpath用于在xml文档中通过元素和属性进行导航和定位。
2.解析网页,对于一些网页结构比较明显的我们一般都采用xpath去进行解析。
3.快速入门
from lxml import etree
# html网页源代码
html = """
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
"""
# 将html转成xml
element = etree.HTML(html)
# print(element)
# 获取li标签下面的a标签的href属性值
links = element.xpath('//ul/li/a/@href')
print(links) # 列表
# 获取li标签下面的a标签的文本数据
titles = element.xpath('//ul/li/a/text()')
print(titles)
结果如下:
二。BS4
BS4也是一种解析方式,原理基本类似xpath。两者相对比,xpath需要记住一些语法,bs4则只需要记住一些方法就可以了,掌握Beautifulsoup这个核心类就ok了。
● 安装
○ pip install lxml
○ pip install bs4 bs4这个库对我们的lxml存在依赖
详细使用可以参考中文文档地址:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
一般常用的find_all和find就能应对大部分情况。
import requests
from bs4 import BeautifulSoup
#解析
soup = BeautifulSoup(text,'html5lib') #这里一般采用 lxml ,也可以使用html5lib
#获取单个标签
aa = soup.find('div', id="container")
#获取标签下所有的下一级标签
list = aa.find_all('div', class_="box picblock col3")
三。urllib
保存图片很好用,其他情况使用不多。
获取请求示例:
import urllib.request
url = '需要访问的网页地址'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
# 1 创建req请求对象并构建headers
req = urllib.request.Request(url,headers=headers)
print(req) # <urllib.request.Request object at 0x0000022D35B9BB88>
# 2 获取响应数据
response = urllib.request.urlopen(req)
# 3 读取响应内容
html = response.read().decode('utf-8')
print(html)
保存图片示例:
from urllib import request
url = '一个图片地址'
request.urlretrieve(url=url,filename='xxx.jpg')
本文暂时没有评论,来添加一个吧(●'◡'●)