python之lxml(xpath)

bs4確實沒這個好用,bs4的樹太複雜html

lxml很好python

定位很是好url

詳細解說在註釋裏面有了spa

 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)

打印結果:code

 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 ...
相關文章
相關標籤/搜索