python之lxml(xpath)
bs4确实没这个好用,bs4的树太复杂
lxml很好
定位非常好
详细解说在注释里面有了
#!/usr/bin/python3.4
# -*- coding: utf-8 -*- from lxml import etree
import urllib.request # 目标网址的html可以看一下
url = "http://www.1kkk.com/manhua589/"
# 解析网址
data = urllib.request.urlopen(url).read()
# 解码
html = data.decode('UTF-8','ignore') page = etree.HTML(html.lower()) # 查找的目标样式如下
"""
...
<ul class="sy_nr1 cplist_ullg">
<li>
<a href="/vol1-6871/" class="tg">第1卷</a>(96页)</li>
<li>
<a href="/vol2-6872/" class="tg">第2卷</a>(90页)</li>
<li>
<a href="/vol3-6873/" class="tg">第3卷</a>(95页)</li>
<li>
<a href="/vol4-6874/" class="tg">第4卷</a>(94页)</li>
<li>
<a href="/vol5-6875/" class="tg">第5卷</a>(95页)</li>
...
""" # 找到ul下li下的a中的href
hrefs = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/@href') # 找到<a>...</a>之间的文字
hrefnames = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/text()') # 找到页数
hrefpages = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/text()') for href in hrefs:
# 打印出来
print(href)
打印结果:
/vol1-6871/
/vol2-6872/
/vol3-6873/
/vol4-6874/
/vol5-6875/
/vol6-6876/
/vol7-6877/
/vol8-6878/
/vol9-6879/
/vol10-6880/
/vol11-23456/
/vol12-23457/
/vol13-23695/
/vol14-28326/
/vol15-31740/
/ch145-149-33558/
/ch150-33559/
/ch151-197255/
/ch152-33560/
/ch153-33561/
/ch154-33562/
/ch155-33563/
/ch156-33564/
/ch157-33565/
...
python之lxml(xpath)的更多相关文章
- python中使用XPath
XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线. XPath介绍: ...
- python中使用XPath笔记
XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线. XPath介绍: ...
- python爬虫:XPath语法和使用示例
python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...
- Python爬虫之xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- 非常全的一份Python爬虫的Xpath博文
非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...
- Windows下Python安装lxml
1.下载easy_install的安装包,下载地址:https://pypi.Python.org/pypi/setuptools 我是Windows7,所以直接下载Windows(Simplify) ...
- requests+lxml+xpath爬取豆瓣电影
(1)lxml解析html from lxml import etree #创建一个html对象 html=stree.HTML(text) result=etree.tostring(html,en ...
- python爬微信公众号前10篇历史文章(3)-lxml&xpath初探
理解lxml以及xpath 什么是lxml? python中用来处理XML和HTML的library.与其他相比,它能提供很好的性能, 并且它支持XPath. 具体可以查看官方文档->http: ...
- Python 通过lxml遍历html xpath
#coding:utf-8 ''' Created on 2017年10月9日 @author: li.liu ''' from selenium import webdriver from lxml ...
随机推荐
- HDU5437 Alisha’s Party 优先队列
点击打开链接 可能出现的问题: 1.当门外人数不足p人时没有判断队列非空,导致RE. 2.在m次开门之后最后进来到一批人没有入队. 3.给定的开门时间可能是打乱的,需要进行排序. #include&l ...
- HDU5546 Ancient Go DFS
点击打开链接 题意:给定一个9*9的棋盘,问黑子能否在下一步将白子围住(四面). 由于数据不大,可以直接将'.'换成'x',用DFS搜索. #include<cstdio> #includ ...
- CF700C (枚举+tarjan)
Problem Break up (CF700C) 题目大意 给一张n个点,m条边的无向图,有边权,和起点S,终点T. (n<=1000 , m<=30000) 要求最多割掉2条边,使得S ...
- 清除浮动1-使用:after 伪元素
<!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...
- dbd到mongo的序列化问题及稳定性
最近工作压力有点大,情绪偶然会失控,要好好反省一下自己. 上周本来打算写CSP相关的东西,但是目前做得还不够多,积累的经验不足,就放弃了.中间找到很好的参考资料,一并放在这里.一篇是比较短的论文,可以 ...
- 使用jQuery设置disabled属性与移除disabled属性
Readonly只针对input和textarea有效,而disabled对于所有的表单元素都有效,下面为大家介绍下使用jQuery设置disabled属性 表单中readOnly和disable ...
- 冒泡排序(python版)
实现源码 def bubble(array): flag = len(array)- : iter = for i in range(flag): ]: array[i], array[i+]= ar ...
- 比较字符串,equals防空指针问题
1,比较两个字符串内容的话,用a.equals(b)比较,其中a,b是两个字符串,用a==b的话比较的是a和b的内存地址.2,如果一个字符串是变量,另一个字符串是常量的话,一定要把常量写在前面,变量写 ...
- Matlab 的reshape函数(转)
看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这 ...
- ZOJ 1095 Humble Numbers
原题链接 题目大意:定义了一种数字Humble Number,他们的质因数只包含2.3.5.7中的一个或者几个,求第n个这样的数,1<=n<=5842. 解法:一看到这道题又在想DFS了, ...