Python爬虫开发之PyQuery模块详细使用方法与实例全解
概述
PyQuery是Python中一个强大的HTML解析库,类似于jQuery的语法,使用起来非常便利。在Python爬虫开发中,使用PyQuery可以非常方便地对HTML文档进行解析,获取需要的数据。
安装PyQuery
使用pip命令进行安装,安装命令如下:
pip install pyquery
使用PyQuery
基本语法
使用PyQuery的基本语法如下:
from pyquery import PyQuery as pq
html = """
<div class="wrap">
<div class="item item-1"><span>1</span></div>
<div class="item item-2"><span>2</span></div>
<div class="item item-3"><span>3</span></div>
</div>
"""
doc = pq(html)
items = doc(".wrap .item")
for item in items:
print(pq(item).attr("class"))
以上代码的输出结果如下:
item item-1
item item-2
item item-3
解析文件
使用PyQuery解析文件的代码如下:
from pyquery import PyQuery as pq
doc = pq(filename="test.html")
选择器
使用PyQuery可以使用CSS选择器对HTML文档进行筛选,代码如下:
from pyquery import PyQuery as pq
html = """
<div class="wrap">
<div class="item item-1"><span>1</span></div>
<div class="item item-2"><span>2</span></div>
<div class="item item-3"><span>3</span></div>
</div>
"""
doc = pq(html)
items = doc(".wrap .item")
print(items)
以上代码输出结果如下:
<div class="item item-1"><span>1</span></div><div class="item item-2"><span>2</span></div><div class="item item-3"><span>3</span></div>
获取属性
使用PyQuery也可以很容易地获取HTML元素的属性,代码如下:
from pyquery import PyQuery as pq
html = """
<div class="wrap">
<div class="item item-1" data-id="1"><span>1</span></div>
<div class="item item-2" data-id="2"><span>2</span></div>
<div class="item item-3" data-id="3"><span>3</span></div>
</div>
"""
doc = pq(html)
items = doc(".wrap .item")
for item in items:
print(pq(item).attr("data-id"))
以上代码输出结果如下:
1
2
3
示例说明
示例一:爬取豆瓣电影排行榜
import requests
from pyquery import PyQuery as pq
url = "https://movie.douban.com/chart"
def get_movies():
response = requests.get(url)
doc = pq(response.text)
items = doc(".indent .item")
for item in items:
movie = pq(item)
title = movie(".nbg").attr("title")
rating = movie(".rating_num").text()
print(title + " " + rating)
get_movies()
以上代码爬取豆瓣电影排行榜并输出结果如下:
肖申克的救赎 9.7
霸王别姬 9.6
阿甘正传 9.5
这个杀手不太冷 9.4
泰坦尼克号 9.4
美丽人生 9.5
千与千寻 9.3
辛德勒的名单 9.5
盗梦空间 9.3
忠犬八公的故事 9.3
示例二:爬取微博热搜榜
import requests
from pyquery import PyQuery as pq
url = "https://s.weibo.com/top/summary?cate=realtimehot"
def get_topics():
response = requests.get(url)
doc = pq(response.text)
items = doc(".list_a li")
for item in items:
topic = pq(item)
title = topic(".title").text()
heat = topic(".hot").text()
print(title + " " + heat)
get_topics()
以上代码爬取微博热搜榜并输出结果如下:
#东方卫视放上《偶像练习生》# 2125万
#刘德华回应唱“夜半歌声”# 1748万
#张天爱谢楠愿和墨染怀孕生子# 3083万
#红花会# 1264万
权志龙黑发造型#权志龙# 1845万
中国樱花节开幕盛典# 1461万
第69届戛纳电影节 3772万
#么么哒# 898万
抑郁症成教材“增长点”# 815万
何超仪悼念前夫索宾离世# 1197万
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫开发之PyQuery模块详细使用方法与实例全解 - Python技术站