通过本案例[豆瓣电影Top250信息爬取]锻炼除正则表达式之外两种信息解析方式:Xpath和PyQuery。
爬取url地址:https://movie.douban.com/top250
分析:
分析url地址:每页25条数据,共计10页
第1页:https://movie.douban.com/top250?start=0
第2页:https://movie.douban.com/top250?start=25
第3页:https://movie.douban.com/top250?start=50
...
结果:
for i in range(10):
url = "https://movie.douban.com/top250?start="+str(i*25)
分析网页源代码内容:每部电影信息都是放在
...
具体实现代码如下:
from requests.exceptions import RequestException
from lxml import etree
from pyquery import PyQuery as pq
import requests
import re,time,json
def getPage(url):
'''爬取指定url页面信息'''
try:
#定义请求头信息
headers = {
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
}
# 执行爬取
res = requests.get(url,headers=headers)
#判断响应状态,并响应爬取内容
if res.status_code == 200:
return res.text
else:
return None
except RequestException:
return None
def parsePage(content):
'''解析爬取网页中的内容,并返回字段结果'''
print(content)
# =========使用pyquery解析==================
# 解析HTML文档
doc = pq(content)
#获取网页中所有标签并遍历输出标签名
items = doc("div.item")
#遍历封装数据并返回
for item in items.items():
yield {
'index':item.find("div.pic em").text(),
'image':item.find("div.pic img").attr('src'),
'title':item.find("div.hd span.title").text(),
'actor':item.find("div.bd p:eq(0)").text(),
'score':item.find("div.bd div.star span.rating_num").text(),
}
'''
# =======使用xpath解析====================
# 解析HTML文档,返回根节点对象
html = etree.HTML(content)
#获取网页中所有标签并遍历输出标签名
items = html.xpath('//div[@class="item"]')
#遍历封装数据并返回
for item in items:
yield {
'index':item.xpath('.//div/em[@class=""]/text()')[0],
'image':item.xpath('.//img[@width="100"]/@src')[0],
'title':item.xpath('.//span[@class="title"]/text()')[0],
'actor':item.xpath('.//p[@class=""]/text()')[0],
'score':item.xpath('.//span[@class="rating_num"]/text()'),
#'time':item[4].strip()[5:],
}
'''
def writeFile(content):
'''执行文件追加写操作'''
with open("./result.txt",'a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False) + "\n")
#json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
def main(offset):
''' 主程序函数,负责调度执行爬虫处理 '''
url = 'https://movie.douban.com/top250?start=' + str(offset)
html = getPage(url)
# 判断是否爬取到数据,并调用解析函数
if html:
for item in parsePage(html):
writeFile(item)
# 判断当前执行是否为主程序运行,并遍历调用主函数爬取数据
if __name__ == '__main__':
for i in range(10):
main(offset=i*25)
time.sleep(1)
审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
python
+关注
关注
57文章
4857浏览量
89586 -
爬虫
+关注
关注
0文章
87浏览量
7951
发布评论请先 登录
相关推荐
热点推荐
一文读懂 · 电气间隙与爬电距离 · 来龙去脉:设计指南、影响因素、计算方法、案例说明
-关于《电气间隙与爬电距离的全面解析与设计指南》的解析-文字原创,素材来源:TI、IEC、IPC、GB、网络-「SysPro|电动汽车标准解读」专栏内容,全文13700字-本篇为节选,完整内容会在
POE取电保护
防雷 / 过电压 / 电流 / ESD 电子电路保护器件专业提供商 针对POE取电, 国际IEEE 802.3标准说明 及两种取电方式 www.yint.com.cn 本文为音特公司技术人员
“爬电距离”与“电气间隙”是怎样计算的?
大家好,分享一篇优秀文章,欢迎转载共同学习。 做高压产品,经常会涉及到爬电距离和电气间隙,今天来看看这2个参数是由什么决定的? 爬电距离 沿绝缘表面测得的两个导电零部件之间或导电零部件与设备防护界面
请问USB缓冲区取数据可以多次取吗?
在使用USB软件获取数据是,下位机给我发送了13个32位数据到USB IN缓冲区,为什么我调用API函数想要第一次取1个32位数据,取完之后再取12位数据,程序会卡死。
发表于 07-16 08:12
电气间隙与爬电距离的相关设计
众所周知,48V相较12V电压上升,因此需要更大的爬电距离(安全绝缘路径)和电气间隙(安全绝缘间距)。这意味着部分连接器需要重新设计。
FLIR ONE Edge Pro红外热像仪在爬宠饲养中的应用
在爬宠饲养中,温度控制是决定宠物健康与幸福的关键因素。无论是巴西龟、蜥蜴还是蛇类,它们依赖外部热源调节体温,稍有不慎就可能导致健康问题。今天,我们就通过一位爬宠主人的真实案例,看看FLIR ONE Edge Pro智能红外热像仪如何帮助他精准掌控饲养环境,让爱宠舒适生活。
洲明科技亮相2025全国电影交易会
此前,5月20日至23日,2025年全国电影(厦门)交易会暨第27届全国影片推介会在厦门举行。作为全国电影标准化委员会LED显示行业唯一委员企业,洲明科技应邀参会,为大会主会场提供超高清LED显示支持,并在核心展览区“数影万象·影视供应链生态展”设立专题展位,系统展示LE
用于摄像头模块的 Open Top QFN 插槽Ironwood Electronics
、Open Top QFN插槽的核心特性Open Top结构顶部开口设计允许芯片直接放置或通过自动化设备(如取放机)快速装载,无需额外操作空间,适配摄像头模块的小型化需求。便于视觉检测或调试时直接观察
发表于 05-09 09:11
取电协议芯片选型难?一文介绍多款取电协议芯片的功能及特点
在当今的电子设备市场中,Type-C接口已经成为了主流的接口标准。它不仅具有高速数据传输和充电的优点,还支持正反插拔,为用户带来了极大的便利。然而,对于Type-C接口取电协议芯片,许多人可能并不
什么是爬电距离与电气间隙?
义爬电距离,可形象理解为一蚂蚁沿绝缘材料表面从一导电部件爬至另一导电部件所经最短路径。它涉及两个导电部件间沿绝缘材料表面测量的最短空间距离,这一距离的设定需综合考量电气设备的额定电压、绝缘材料的耐泄
华夏电影与利亚德集团合作新成果:全球首款Micro 4k LED电影屏落地
近期,华夏电影与利亚德集团合作的又一重要成果——全球首款Micro 4k LED电影屏正式落地仪式在河北石家庄影城隆重举行。这款电影屏是行业内唯一一款通过DCI认证的Micro LED电影
PI推出新型宽爬电距离开关IC
深耕于高压集成电路高能效功率变换领域的知名公司Power Integrations(纳斯达克股票代号:POWI)今天为其面向汽车应用的InnoSwitch3-AQ反激式开关IC推出宽爬电封装选项
Power Integrations推出InnoSwitch™3-AQ宽爬电封装
近日,Power Integrations宣布为其面向汽车应用的InnoSwitch™3-AQ反激式开关IC推出宽爬电封装选项。 该新封装具备5.1mm的宽漏源极引脚爬电距离,无需喷涂三防漆,即可

豆瓣电影Top250信息爬取
评论