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 ...
随机推荐
- HTML的表单
HTML表单 <!-- <form></form>标签对用来创建一个表单,即定义表单的开始和结束位置,<form>表单具有下面等属性 1.action属性用来 ...
- 头文件定义和ARM指令
2015.2.2星期一,阴天 内存管理:内存的分配和释放等静态和动态内存:主要是在释放方式上的区别 静态变量:编译时就已经确定,定义在函数外面自动变量:在程序运行时才能在栈中确定只读数据节:存放常量的 ...
- Get Many Persimmon Trees_枚举&&二维树状数组
Description Seiji Hayashi had been a professor of the Nisshinkan Samurai School in the domain of Aiz ...
- ibatis 的 "This SQL map does not contain a MappedStatement"的错误
This SQL map does not contain a MappedStatement named List 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有 ...
- dedecms 按照栏目指定的id排序
方法: 1.打开include/taglib/channelartlist.lib.php,找到大约78行,把 代码如下(一定要注意表名一致): $dsql->SetQuery("SE ...
- 刻通云KeyTone Cloud测试
注:本文转自陈沙克的博客,原文见http://www.chenshake.com/carved-through-the-keytone-cloud-cloud-testing/ 一直都很希望有更多的O ...
- python---解决“Unable to find vcvarsall.bat”错误
安装某些module时发生常见的 Unable to find vcvarsall.bat 错误 在eddsn找到了“Unable to find vcvarsall.bat” error when ...
- Web应用开发工具及语言需要具备的功能探索
1 前言 最近一个多月在做Web项目,用到的技术有(也不算泄漏公司机密吧): 后台:Struts 2(with JSP/FreeMarker).Spring.Hibernate.MySQL.Web S ...
- ZPPR016-在制品清单报表
*&---------------------------------------------------------------------**& Report ZPPR016*&a ...
- 装载:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...