使用 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 pq doc = 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-8 from 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
克里斯蒂安·贝尔
迈克尔·凯恩
连姆·尼森
凯蒂·霍尔姆斯
加里·奥德曼
基里安·墨菲
汤姆·威尔金森
摩根·弗里曼
渡边谦
相关推荐
本文实例讲述了python爬虫学习笔记之pyquery模块基本用法。分享给大家供大家参考,具体如下: 相关内容: pyquery的介绍 pyquery的使用 安装模块 导入模块 解析对象初始化 css选择器 在选定元素之后的元素再...
Scrapy: Scrapy 是一个强大的 Python 爬虫框架,提供了高效的抓取和数据处理能力,支持异步方式处理请求和页面解析。它拥有丰富的特性,如自动 throttling、并发控制、数据存储等。 Beautiful Soup: Beautiful ...
本文实例讲述了Python爬虫PyQuery库基本用法。分享给大家供大家参考,具体如下: PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,...
PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用...
2. Python爬虫工具和库 Requests:发送HTTP请求的Python库,用于获取网页内容。 python import requests response = requests.get(url) Beautiful Soup:HTML和XML解析库,用于提取网页中的数据。 python from bs4...
├─章节2: 基础篇 │ 课时07:爬虫基本原理讲解.mp4 │ 课时08:Urllib库基本使用.mp4 │ 课时09:Requests库基本使用.mp4 │ 课时10:正则表达式基础.mp4 │ 课时11:BeautifulSoup库详解.mp4 │ 课时12:PyQuery...
主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下
python_pyquery学习总结,爬取html和解析html数据必备
python pyquery 库是学习爬虫必备的一个库,它解析强大,有超高的应用场景,可以帮你快速解析网页,找到你想找到的内容
解析数据:使用BeautifulSoup、lxml或pyquery等库解析HTML内容,提取出你感兴趣的职位信息,如职位名称、薪资、工作地点、职位要求等。 处理分页和限制:BOSS直聘可能有限制请求频率或需要处理分页的情况,你需要在...
网络爬虫与数据采集笔记更新2 本文档是一份关于网络爬虫与数据采集的笔记,涵盖了爬虫的基本概念、爬虫的分类、爬虫的基本流程、爬虫与反爬虫、爬虫的合法性与robots协议等内容,同时也涵盖了爬虫相关的一些技术,...
这通常涉及使用 requests 库发送 HTTP 请求,以及使用 BeautifulSoup、lxml、pyquery 或正则表达式来解析响应的 HTML 内容。 python import requests from bs4 import BeautifulSoup def fetch_data(url): ...
urllib、requests 等请求库, Beautiful Soup、 XPath、 pyquery 等解析库以及文本和各类数据库的存储方法;使用python3爬虫多个案例介绍了 Ajax 数据爬取,使用 Selenium 和 Splash 进行动态网站爬
利用Python爬虫技术对网页信息进行爬取分析,利用requests来模拟请求,用pyquery来解析网页,用文本来保存数据,用词云工具来生成词云
python基础教程head_Python爬⾍基础⼊门,这是我看到最简 单易懂的教程 爬⾍需求 1....解析内容 解析html数据:正则表达式(RE模块),第三⽅解析库如Beautifulsoup,pyquery等 解析json数据:json模块 解析⼆进
PyQuery详解 Selenium详解 实战篇 Requests+正则表达式爬取猫眼电影 分析Ajax请求并抓取今日头条街拍美图 使用Selenium模拟浏览器抓取淘宝商品美食信息 使用Redis+Flask维护动态代理池 使用代理处理反爬抓取微信...
互联网爬虫,蜘蛛,数据采集器,网页解析器的汇总,因新技术不断发展,新框架层出不穷,此文会不断更新... 交流讨论 欢迎推荐你知道的开源网络爬虫,网页抽取框架. 开源网络爬虫QQ交流群:322937592 email address: ...
解析网页,查找元素,bs,json,或正则表达式,pyquery,lxml推荐bs,json,正则4.效率控制:单进程/多协程/多线程5.数据存储txt,excel,二进制文件,csv或者数据库二、难以破译的爬虫使用selenium1.模拟打开浏览器2.获取...