Extraire la colonne cours sur la page d'accueil de l'étudiant csdn

Contexte de l'exigence:
extrayez la colonne du cours sur le côté gauche de la page d'accueil du Collège du RPSC.
Insérez la description de l'image iciCommencez par déclarer: la page d'accueil de l'étudiant du RPSC extraite est un objet html, et elle est téléchargée sur une page html statique locale.
Voici le code extrait pour implémenter le processus complet,

import lxml.etree as le   # 在python中如果需要运用xpath,那么就要调用python中的lxml中的etree模块
### 要思考一件事,你当前处理的问题在哪个领域范围内的,先定位到所需知识领域,再定位需要解决的问题,在此基本上考虑需要调用哪到的模块
## 读取本地保存的一个静态html,读取的路径,以什么方式读取,用什么编码格式
with open('edu.html','r',encoding='utf-8') as f: # 先打开要读取的对象,读取的路径,以什么方式读取,用什么编码格式
    html=f.read() ## 针对打开的对象进行读取操作,使用read()函数,把读取后的结果返回给一个对象,该对象为html
## 如果需要使用xpath对html对象进行操作,那么要转换为xpath对象,如下方法完成对象转换
html_x=le.HTML(html)
print(html_x)
type(html_x)
<Element html at 0x26bd83eb640>
lxml.etree._Element
## 得到xpath对象后,就可以使用xpath方法来操作它! 方法都是有适用对象的
div_x_s=html_x.xpath('//div[@class="classify_cList"]')   # 该标签下包裹着一个h3标签和一个div标签,这两个标签属于平行结构
print(div_x_s)  # 得到6块div标签并且这每一块div标签均包裹着一个h3标签和一个div标签

[<Element div at 0x26bd83eb6c0>, <Element div at 0x26bd83eb500>, <Element div at 0x26bd83dff80>, <Element div at 0x26bd83dfe80>, <Element div at 0x26bd83df480>, <Element div at 0x26bd83dffc0>]
for div_x in div_x_s:
    category=div_x.xpath('./h3/a/text()')[0]  # 可以通过遍历的方法取出每一个块div标签里面的h3标签,通过取索引0的方式获取到具体的文本内容
    print(category)
 人工智能
编程语言
考试认证
移动开发
云计算/大数据
其他课程
for div_s in div_x_s:
    category_s=div_s.xpath('./div/span/a/text()') ## 依然是通过遍历的方法取出每一个div标签里面包裹的div标签,此div标签里面的有多个字符串对象,因此需要通过二次遍历的方式读取出来
    print(category_s)
['机器学习', '深度学习', '计算机视觉']
['C/C++', 'Java', 'Python']
['华为认证', '思科认证', '软考']
['iOS', '微信开发', 'Swift']
['Hadoop', 'Docker/K8S', 'Spark']
['系统/网络/运维', '数据库', '区块链']
data_s=[]  ## 定义一个列表,用来存放遍历出来的h3标签和div标签
for div_x in div_x_s:
    category=div_x.xpath('./h3/a/text()')[0]
    category_s=div_s.xpath('./div/span/a/text()')
    data_s.append(
    dict(
        category=category,
        category_s=category_s
    )
)
print(data_s)   
[{
    
    'category': '人工智能', 'category_s': ['系统/网络/运维', '数据库', '区块链']}, {
    
    'category': '编程语言', 'category_s': ['系统/网络/运维', '数据库', '区块链']}, {
    
    'category': '考试认证', 'category_s': ['系统/网络/运维', '数据库', '区块链']}, {
    
    'category': '移动开发', 'category_s': ['系统/网络/运维', '数据库', '区块链']}, {
    
    'category': '云计算/大数据', 'category_s': ['系统/网络/运维', '数据库', '区块链']}, {
    
    'category': '其他课程', 'category_s': ['系统/网络/运维', '数据库', '区块链']}]
for data in data_s:
    print(data.get('category'))
    for category_ in data.get('category_s'):
        print(' ',category_)
人工智能
  系统/网络/运维
  数据库
  区块链
编程语言
  系统/网络/运维
  数据库
  区块链
考试认证
  系统/网络/运维
  数据库
  区块链
移动开发
  系统/网络/运维
  数据库
  区块链
云计算/大数据
  系统/网络/运维
  数据库
  区块链
其他课程
  系统/网络/运维
  数据库
  区块链

Expérimente
une boucle logique claire à travers le fond et plus propice à une étude approfondie ultérieure

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42961082/article/details/109812910
conseillé
Classement