【网络安全带你练爬虫-100练】第11练:xpath快速定位提取数据

目录

一、目标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

猜你喜欢

转载自blog.csdn.net/qq_53079406/article/details/131616857
今日推荐