python Lxml模块 解析爬取的标签

# lxml是一个高性能的python库,用于解析(处理)HTML和XML文档,
# 它提供了简单而灵活的API,帮助开发者轻松读取、解析、创建和修改XML和HTML文档。
import requests # 导入requests库,用于发送HTTP请求
from lxml import etree # 导入Lxml的etree模块(库)使用etree获取网页element对象
# 爬虫对HTML提取的内容,提取标签中的文本内容及属性的值 比如提取a标签中href属性的值,获取URL,进而继续发起请求
from openpyxl import Workbook # 导入openpyxl库,用于创建和操作Excel文件
# 定义GiteeCusts类,用于获取Gitee平台上的客户信息
class GiteeCusts:
    # 定义类的初始化方法,用于初始化类的属性 self.url self.headers
    def __init__(self,url):
        self.url = url
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36'}
    # 定义类的方法,用于获取客户信息
    def get_custInfo(self):
        # 发送GET请求,获取网页内容 url headers
        response = requests.get(self.url, headers=self.headers)
        # 将 html 内容解析为 Element 对象, html = etree.HTML(text)
        htmlElement = etree.HTML(response.content)
        #xpath方法返回列表的三种情况
        # 1.返回空列表 []:根据xpath规则,表示没有定位到任何元素
        # 2.返回字符串 :根据xpath规则,匹配的一定是文本内容或者某属性的值
        # 3.返回element对象列表:根据xpath规则,匹配的是标签,可以对返回的element对象列表进行进一步的xpath筛选
        # 定位到需要爬取的页面元素列表, html.xpath("xpath语法规则字符串")
        # xpath语法规则字符串,用于定位需要爬取的页面元素
        giteelist = htmlElement.xpath('//section[@id="caseList"]/div/div[2]/div[1]/div')    
        # 定义客户信息二维列表,并添加表头
        custInfo =[['url', 'tag', 'title', 'info']]
        # 遍历页面元素列表,获取每一个客户信息
        for el in giteelist:
            #选择拥有href属性的所有<a>标签,使用的Xpath表达式://a[@href]
            url = 'https://gitee.com/'+ el.xpath('./a/@href')[0]
            # 选择span标签的文本内容,使用的Xpath表达式:./a/div[2]/div[2]/span/text()
            tag = el.xpath('./a/div[2]/div[2]/span/text()')[0]
            title = el.xpath("./a/div[2]/div[3]/h3/text()")[0]
            info = el.xpath('./a/div[2]/div[3]/p/text()')[0]
            custInfo.append([url,tag,title,info])
        return custInfo
    #创建类的实例,用于获取客户信息
    # 调用类的方法,获取客户信息
    # 打印客户信息
if __name__ == '__main__':
    custs = GiteeCusts('https://gitee.com/customers')
    custInfo = custs.get_custInfo()
    print(custInfo)

    #创建Excel对象
    wb = Workbook()
    sheet = wb.active
    for row in custInfo:
        sheet.append(row)
    # 保存Excel文件
    wb.save('gitee_custs.xlsx')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容