爬虫解析2:pyquery总结
来源:互联网 发布:霸业传奇降级转生数据 编辑:程序博客网 时间:2024/05/16 12:59
使用 pyQuery 解析HTML内容
https://segmentfault.com/a/1190000005182997
http://blog.csdn.net/cnmilan/article/details/8727308
安装 pyquery 即可:
pip install pyquery
初始化:
直接加载一个html串
v_source=pq("")
加载位于指定路径下的html文件
v_source=pq(filename=path_to_html_file)
加载url地址直接进行解析
v_source=pq(url='http://yunvs.com/list/mai_1.html')
网页请求
PyQuery 本身还有网页请求功能,而且会把请求下来的网页代码转为 PyQuery 对象。
一般我们不会用 PyQuery 来做网络请求,仅仅是用来解析。
from pyquery import PyQuery as pq
print pq('http://cuiqingcai.com/', headers={'user-agent': 'pyquery'})
print pq('http://httpbin.org/post', {'foo': 'bar'}, method='post', verify=True)
GET,POST,样样通。
例子:
from pyquery import PyQuery as pyq html = '''<html> <title>这是标题</title><body> <p id="hi">Hello</p> <ul> <li>list1</li> <li>list2</li> </ul></body></html>''' jq = pyq(html)print jq('title') # 获取 title 标签的源码# <title>这是标题</title>print jq('title').text() # 获取 title 标签的内容# 这是标题print jq('#hi').text() # 获取 id 为 hi 的标签的内容# Hello li = jq('li') # 处理多个元素for i in li: print pyq(i).text()# list1# list2
遍历
遍历用到 items 方法返回对象列表,或者用 lambda
from pyquery import PyQuery as pqdoc = pq(filename='hello.html')lis = doc('li')for li in lis.items(): print li.html()print lis.each(lambda e: e)
运行结果
first item<a href="link2.html">second item</a><a href="link3.html"><span class="bold">third item</span></a><a href="link4.html">fourth item</a><a href="link5.html">fifth item</a><li class="item-0">first item</li> <li class="item-1"><a href="link2.html">second item</a></li> <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li> <li class="item-1 active"><a href="link4.html">fourth item</a></li> <li class="item-0"><a href="link5.html">fifth item</a></li>
=================================================================
例子:使用PyQuery爬取豆瓣某电影的演员表:
HTML:
<h1><span property="v:itemreviewed">蝙蝠侠:侠影之谜 Batman Begins</span><span class="year">(2005)</span></h1><div id="info"> <span ><span class='pl'>导演</span>: <span class='attrs'><a href="/celebrity/1054524/" rel="v:directedBy">克里斯托弗·诺兰</a></span></span><br/> <span ><span class='pl'>编剧</span>: <span class='attrs'><a href="/celebrity/1054524/">克里斯托弗·诺兰</a> / <a href="/celebrity/1036537/">大卫·S·高耶</a></span></span><br/> <span class="actor"><span class='pl'>主演</span>: <span class='attrs'><a href="/celebrity/1005773/" rel="v:starring">克里斯蒂安·贝尔</a> / <a href="/celebrity/1054509/" rel="v:starring">迈克尔·凯恩</a> / <a href="/celebrity/1031220/" rel="v:starring">连姆·尼森</a> / <a href="/celebrity/1053558/" rel="v:starring">凯蒂·霍尔姆斯</a> / <a href="/celebrity/1010507/" rel="v:starring">加里·奥德曼</a> / <a href="/celebrity/1047992/" rel="v:starring">基里安·墨菲</a> / <a href="/celebrity/1036397/" rel="v:starring">汤姆·威尔金森</a> / <a href="/celebrity/1054534/" rel="v:starring">摩根·弗里曼</a> / <a href="/celebrity/1027181/" rel="v:starring">渡边谦</a></span></span><br/> <span class="pl">类型:</span> <span property="v:genre">剧情</span> / <span property="v:genre">动作</span> / <span property="v:genre">科幻</span> / <span property="v:genre">惊悚</span> / <span property="v:genre">犯罪</span><br/> <span class="pl">制片国家/地区:</span> 美国 / 英国<br/> <span class="pl">语言:</span> 英语 / 乌尔都语 / 汉语普通话<br/> <span class="pl">上映日期:</span> <span property="v:initialReleaseDate" content="2005-06-29(中国大陆)">2005-06-29(中国大陆)</span> /<span property="v:initialReleaseDate" content="2005-06-15(美国)">2005-06-15(美国)</span><br/> <span class="pl">片长:</span> <span property="v:runtime" content="140">140分钟</span><br/> <span class="pl">又名:</span> 蝙蝠侠前传1:侠影之谜 / 蝙蝠侠:开战时刻(台) / 蝙蝠侠-侠影之谜(港) / 蝙蝠侠前传 / 蝙蝠侠5 / 蝙蝠侠诞生<br/> <span class="pl">IMDb链接:</span> <a href="http://www.imdb.com/title/tt0372784" target="_blank" rel="nofollow">tt0372784</a><br></div>
PY:
# coding=utf-8from pyquery import PyQuery as pyq jq=pyq(url='http://movie.douban.com/subject/1309069/')print("=============方法1==============")#print(jq.html())info=jq("#info").find("a[rel='v:starring']")print(len(info))print(info)for data in info: print(jq(data).text())otherInfo=jq("span[class='pl']")#otherInfo=jq("#info").find("span[class='pl']")print(len(otherInfo))#print(otherInfo)print("=============方法2==============")starring = jq("a[rel='v:starring']").map(lambda i,e:pyq(e).text()) print(jq("span[property='v:itemreviewed']").text()) for data in starring: print(data)
结果:
=============方法1==============
9
<a href="/celebrity/1005773/" rel="v:starring">克里斯蒂安·贝尔</a> / <a href="/celebrity/1054509/" rel="v:starring">迈克尔·凯恩</a> / <a href="/celebrity/1031220/" rel="v:starring">连姆·尼森</a> / <a href="/celebrity/1053558/" rel="v:starring">凯蒂·霍尔姆斯</a> / <a href="/celebrity/1010507/" rel="v:starring">加里·奥德曼</a> / <a href="/celebrity/1047992/" rel="v:starring">基里安·墨菲</a> / <a href="/celebrity/1036397/" rel="v:starring">汤姆·威尔金森</a> / <a href="/celebrity/1054534/" rel="v:starring">摩根·弗里曼</a> / <a href="/celebrity/1027181/" rel="v:starring">渡边谦</a>
克里斯蒂安·贝尔
迈克尔·凯恩
连姆·尼森
凯蒂·霍尔姆斯
加里·奥德曼
基里安·墨菲
汤姆·威尔金森
摩根·弗里曼
渡边谦
18
=============方法2==============
蝙蝠侠:侠影之谜 Batman Begins
克里斯蒂安·贝尔
迈克尔·凯恩
连姆·尼森
凯蒂·霍尔姆斯
加里·奥德曼
基里安·墨菲
汤姆·威尔金森
摩根·弗里曼
渡边谦
- 爬虫解析2:pyquery总结
- 爬虫之pyquery 解析html
- 爬虫之pyquery
- 爬虫基础 -- pyquery
- Python--python爬虫神器PyQuery
- pyquery解析ALM描述字段
- python pyquery 进行html解析
- 【Python】网络爬虫(一):pyquery一瞥
- python爬虫神器PyQuery的使用方法
- Python爬虫利器之PyQuery的用法
- python爬虫神器PyQuery的使用方法
- python爬虫神器PyQuery的使用方法
- Python爬虫神器PyQuery的使用方法
- python之pyQuery使用总结
- python使用pyquery库总结
- pyQuery
- PyQuery
- 爬虫解析1:XPath总结
- git 的基本命令学习
- Python爬虫实战:Scrapy豆瓣电影爬取
- linux下的task struct结构体分析
- Scrapy爬虫:模拟浏览器和使用代理
- jquery操作select
- 爬虫解析2:pyquery总结
- intellij IDEA 如何设置默认的maven配置
- python 发送HTTP请求 post json 格式
- 函数名与函数指针
- 虚拟内存-页式存储管理算法
- python学习笔记2-列表与元组
- VCGlib入门记录一
- PHP文件读取操作
- eclipse从数据库逆向生成Hibernate实体类