`
uule
  • 浏览: 6351535 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

【爬虫解析2】:pyquery总结

 
阅读更多

使用 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

克里斯蒂安·贝尔

迈克尔·凯恩

连姆·尼森

凯蒂·霍尔姆斯

加里·奥德曼

基里安·墨菲

汤姆·威尔金森

摩根·弗里曼

渡边谦

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    经典爬虫库(内含超过十种经典爬虫代码)

    Scrapy: Scrapy 是一个强大的 Python 爬虫框架,提供了高效的抓取和数据处理能力,支持异步方式处理请求和页面解析。它拥有丰富的特性,如自动 throttling、并发控制、数据存储等。 Beautiful Soup: Beautiful ...

    探秘Python爬虫的核心:requests库的威力与应用

    2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写规则来定位并抓取页面中需要的数据,如文本、链接、图片等。 4. **数据存储**:将提取...

    Python-pyquery一个解析HTML的库类似jQuery

    在网络爬虫项目中,PyQuery用于解析HTML响应,提取所需信息: ```python import requests from pyquery import PyQuery as pq url = 'https://example.com' response = requests.get(url) doc = pq...

    拉勾教育《52讲轻松搞定网络爬虫》讲师:崔庆才.rar

    接着,课程会逐步深入到爬虫的实现技术,包括Python中的requests库用于发送HTTP请求,BeautifulSoup或PyQuery库解析HTML文档,以及如何使用正则表达式或XPath进行数据提取。此外,还会讲解如何处理JavaScript渲染的...

    2022年Python爬虫最全资料【6年爬虫经验精华总结】

    - **HTML解析**:收到响应后,爬虫解析HTML,提取目标信息,可能使用正则表达式、BeautifulSoup或XPath等工具。 5. **Urllib库使用**: - **urlopen()**:发送HTTP请求并返回响应对象。 - **read()**、**...

    Python爬虫PyQuery库基本用法入门教程

    本文实例讲述了Python爬虫PyQuery库基本用法。分享给大家供大家参考,具体如下: PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,...

    Python库 | pyquery-1.2.15-py2.py3-none-any.whl

    1. **网页爬虫**:PyQuery可以轻松地解析HTML响应,提取所需数据。例如,从网页中抓取所有的链接: ```python links = doc('a').map(lambda i, e: pq(e).attr('href')) ``` 2. **数据清洗**:在数据分析项目中...

    狠心开源企业级舆情新闻爬虫项目:支持任意数量爬虫一键运行、爬虫定时任务、爬虫批量删除;爬虫一-NewsCrawl.zip

    - **Python爬虫框架**:Python是爬虫开发的常用语言,可能使用了Scrapy、BeautifulSoup或Requests+PyQuery等库来实现网络请求和数据解析。 - **数据库管理**:抓取到的新闻数据可能会存储在数据库中,如MySQL、...

    跟着崔庆才学爬虫2:requests库的使用

    崔庆才老师的“跟着崔庆才学爬虫2:requests库的使用”教程主要涵盖了Python爬虫中必不可少的requests库的使用方法。requests库是Python中最常用的HTTP客户端库,用于发送HTTP请求,非常适合进行网页抓取。在这个...

    包含了各个类型网站的爬虫源码集合

    通过研究这些源码,开发者可以深入了解HTTP/HTTPS协议、网页解析(如使用BeautifulSoup或PyQuery)、异步请求(如使用asyncio库)、数据存储(如CSV、JSON、数据库)等爬虫技术的关键知识点。此外,还能学习到如何...

    第三章:数据解析_Python爬虫教程_源码

    本教程主要聚焦于数据解析,这是爬虫过程中至关重要的一个环节。数据解析是指将爬取到的原始网页数据转换为结构化的、有意义的信息。下面,我们将深入探讨Python中用于数据解析的一些关键技术和工具。 1. **...

    蜘蛛网络爬虫

    2. **广度爬虫**:先抓取顶层页面,然后逐渐扩展到下一层,确保重要页面优先抓取。 3. **聚焦爬虫**:针对特定主题或领域进行抓取,如金融新闻、学术论文等。 4. **增量爬虫**:仅抓取自上次抓取以来发生变化的新...

    网络爬虫源代码集锦

    2. **处理反爬虫策略**:如设置User-Agent、处理Cookies、处理验证码、模拟登录等。 3. **多线程/多进程爬虫**:通过并行处理提高爬取效率。 4. **爬虫中间件**:用于处理请求和响应的中间件,如错误重试、IP代理...

    深度解析爬虫技术

    2. **爬虫实现** - **网页抓取**:使用HTTP库(如Python的requests)发送请求获取网页内容,然后通过解析库(如BeautifulSoup或PyQuery)解析HTML,提取有用数据。 - **动态内容处理**:许多现代网站使用AJAX加载...

    网络爬虫程序-网络爬虫程序

    4. **解析页面**:爬虫解析收到的HTML,提取所需信息,如文本、链接等。 5. **发现新链接**:在解析过程中,爬虫会找到页面中其他链接,将其添加到待抓取队列中。 6. **循环抓取**:这个过程不断重复,直到达到预设...

    windows下安装Pyquery

    2. 使用pip安装Pyquery,可能需要更换源或使用离线包。 3. 验证安装是否成功并开始使用Pyquery进行网页数据的抓取和处理。 在进行网络爬虫项目时,掌握Pyquery的使用不仅可以提高开发效率,还能让你的代码更加简洁...

    python爬虫.rar

    - **Python爬虫框架**:Python有多种流行的爬虫框架,如Scrapy、BeautifulSoup和Requests+PyQuery等,它们简化了爬虫开发过程。 2. **Python爬虫库**: - **Requests**:这是Python中广泛使用的HTTP库,用于发送...

    csdn爬虫面试题.rar_python面试

    2. PyQuery:PyQuery库类似于jQuery,用于简化HTML和XML文档的解析。 七、反爬与模拟登录 1. User-Agent与headers:修改User-Agent以避免被网站识别为爬虫。 2. IP代理:使用代理IP池解决IP被封问题。 3. Cookies与...

Global site tag (gtag.js) - Google Analytics