python xpath lxml 抓取网页,不是特别成功
备注:xpath中如果要带变量,现在只能用format方式进行后添加
etree获取到的内容不知道是什么类型数据:之前是个emenment,这里却是一个列表
import requests
from lxml import etree
url = "https://docs.openvswitch.org/en/latest/ref/"
resp = requests.get(url).text
et = etree.HTML(resp)
for i in range(1,15): #无法知道下面有多少页,所以只能查看后指定了
list_xpath = ("//div[@class='toctree-wrapper compound']/ul/li[{}]/a/@href").format(i) #用了很多种办法带参数,只有这种format方法可以用
file_url = et.xpath(list_xpath) #返回获取到的url 的后缀,但是带/,需要转换成str后,切割
file_name = str(file_url[0]).split("/")[0] #由于带"/“,无法做文件名后面需要用此过滤出来的做为文件名
new_url = url + file_name + "/" #再次拼接成新的url地址
data = requests.get(new_url).text.encode() #如果没有encode(),则提示TypeError: a bytes-like object is required, not 'str'
print(new_url)
with open(file_name + ".html",mode="wb") as f:
f.write(data)