目录
一、目标1:使用etree解析数据
二、目标2:使用xpath爬取指定数据
三、目标3:提取指定数据
四、网络安全小圈子
一、目标1:使用etree解析数据
其余的不用过多介绍,前面的练习都给大家已经过了一遍
def get_page():url = 'https://www.chinaz.com/'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",}res1 = requests.get(url, headers=headers, timeout=10)res = res1.content.decode('utf-8') tree = etree.HTML(res)
其中数据解析代码如下
tree = etree.HTML(res)
对返回的内容进行UTF-8解码,不然会出现乱码
res = res1.content.decode('utf-8')
二、目标2:使用xpath爬取指定数据
我们来爬一下这几个标题
找上一级
可以看到他们都在不同li标签下
所以他们的上一级标签ul相当于是我们的列表合集
定位xpath路径
定位li的xpath路径
因为我们要获取到ul下所有li列表
xpath路径如下
list = tree.xpath('//*[@id="cz"]/div[2]/div[3]/div/div[1]/div[1]/div/div[2]/div[2]/div/ul/li')
打印出来可以看见
三、目标3:提取指定数据
定位xpath
然后还有3个标签才到h2标签
遍历每一个目标标签,并转为text()格式
f = open('test', 'w', encoding ='utf-8')for l in ul_list:desc = l.xpath('./div/div[1]/a/h2/text()')[0]print(desc + '\n')f.write(str(desc) + '\n')f.close()
运行结果
完整代码
import requests
from lxml import etree
def get_page():url = 'https://www.chinaz.com/'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",}res1 = requests.get(url, headers=headers, timeout=10)res = res1.content.decode('utf-8') tree = etree.HTML(res)ul_list = tree.xpath('//*[@id="cz"]/div[2]/div[3]/div/div[1]/div[1]/div/div[2]/div[2]/div/ul/li')f = open('test', 'w', encoding ='utf-8')for l in ul_list:desc = l.xpath('./div/div[1]/a/h2/text()')[0]print(desc + '\n')f.write(str(desc) + '\n')f.close()
if __name__ == '__main__':get_page()
四、网络安全小圈子
README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md
GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge