Extraiga la columna del curso en la página de inicio del estudiante csdn

Antecedentes del requisito:
extraiga la columna del curso en el lado izquierdo de la página de inicio de la universidad de CSDN.
Inserte la descripción de la imagen aquíPrimero declare: la página de inicio del estudiante de CSDN extraída es un objeto html y se descarga a una página html estática local. El
siguiente es el código extraído para implementar el todo el proceso,

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_)
人工智能
  系统/网络/运维
  数据库
  区块链
编程语言
  系统/网络/运维
  数据库
  区块链
考试认证
  系统/网络/运维
  数据库
  区块链
移动开发
  系统/网络/运维
  数据库
  区块链
云计算/大数据
  系统/网络/运维
  数据库
  区块链
其他课程
  系统/网络/运维
  数据库
  区块链

Experimenta
un bucle lógico claro a través de la parte inferior y más propicio para un estudio en profundidad posterior

Supongo que te gusta

Origin blog.csdn.net/weixin_42961082/article/details/109812910
Recomendado
Clasificación