• python之lxml(xpath)


    bs4确实没这个好用,bs4的树太复杂

    lxml很好

    定位非常好

    详细解说在注释里面有了

     1 #!/usr/bin/python3.4
     2 # -*- coding: utf-8 -*-
     3 
     4 from lxml import etree
     5 import urllib.request
     6 
     7 # 目标网址的html可以看一下
     8 url = "http://www.1kkk.com/manhua589/"
     9 # 解析网址
    10 data = urllib.request.urlopen(url).read()
    11 # 解码
    12 html = data.decode('UTF-8','ignore')
    13 
    14 page = etree.HTML(html.lower())
    15 
    16 # 查找的目标样式如下
    17 """
    18 ...
    19 <ul class="sy_nr1 cplist_ullg">
    20     <li>
    21       <a href="/vol1-6871/" class="tg">第1卷</a>(96页)</li>
    22     <li>
    23       <a href="/vol2-6872/" class="tg">第2卷</a>(90页)</li>
    24     <li>
    25       <a href="/vol3-6873/" class="tg">第3卷</a>(95页)</li>
    26     <li>
    27       <a href="/vol4-6874/" class="tg">第4卷</a>(94页)</li>
    28     <li>
    29       <a href="/vol5-6875/" class="tg">第5卷</a>(95页)</li>
    30     ...
    31 """
    32 
    33 # 找到ul下li下的a中的href
    34 hrefs = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/@href')
    35 
    36 # 找到<a>...</a>之间的文字
    37 hrefnames = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/text()')
    38 
    39 # 找到页数
    40 hrefpages = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/text()')
    41 
    42 for href in hrefs:
    43     # 打印出来
    44     print(href)

    打印结果:

     1 /vol1-6871/
     2 /vol2-6872/
     3 /vol3-6873/
     4 /vol4-6874/
     5 /vol5-6875/
     6 /vol6-6876/
     7 /vol7-6877/
     8 /vol8-6878/
     9 /vol9-6879/
    10 /vol10-6880/
    11 /vol11-23456/
    12 /vol12-23457/
    13 /vol13-23695/
    14 /vol14-28326/
    15 /vol15-31740/
    16 /ch145-149-33558/
    17 /ch150-33559/
    18 /ch151-197255/
    19 /ch152-33560/
    20 /ch153-33561/
    21 /ch154-33562/
    22 /ch155-33563/
    23 /ch156-33564/
    24 /ch157-33565/
    25 ...
  • 相关阅读:
    IDEA常用快捷指令整理
    Python dict 字典
    内联函数
    【MFC】编辑框 CEdit Ctrl控件自动换行设置
    mysql 多sql文件恢复方案
    Linux: 用64位的系统,能编译32位的程序吗?
    C++ 遍历数组
    工业现场传感器传感器为什么采用电流形式输出?
    【转】电磁阀、电磁铁的工作原理说明
    PCB板强弱电隔离距离不够导致损坏和问题检查记录
  • 原文地址:https://www.cnblogs.com/TTyb/p/5832790.html
Copyright © 2020-2023  润新知