import re
import requests
class Mao():
def __call__(self, *args, **kwargs):
"""
当前类的对象当做函数使用的时候触发
"""
self.run()
def run(self):
#获取,猫眼HTML
base_url="https://maoyan.com/board"
response=requests.get(base_url)
html=response.text
# print(html)
self.get_data(html)
def get_data(self,html):
#缩小范围,获取dd的信息
#换行不能用.*? re.S可以使\n转换为普通字符。.*?就可以匹配到\n
dd_list=re.findall('<dd>([\s\S]*?)</dd>',html)
print(dd_list[0])
#循环获取dd中的电影信息
for dd in dd_list:
# print(dd)
#获取排名
rank=re.findall('<i class="board-index board-index-\d+">(\d+)</i>',dd)[0]
# print(rank)
#获取电影名称
name=re.findall('title="(.*?)" class="image-link"',dd)[0]
# print(name)
#获取主演信息:
actor=re.findall('<p class="star">([\d\D]*?)</p>',dd)[0]
if "主演" not in actor:
actor=''
else:
#去掉两边的空格
actor=actor.strip()
# print(actor)
#获取上映日期
publish_data=re.findall('<p class="releasetime">上映时间:(.*?)</p>',dd)[0]
# print(publish_data)
#评分信息
score_match=re.search('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(\d)</i></p>',dd)
score=score_match.group(1)+score_match.group(2)
# print(score)
#获取图片信息,浏览器获取到的信息和代码获取到的信息有时候不一样
#以代码获取到的为准。在获取图片的过程当中,优先获取大图
picture=re.findall('data-src="(.*?)@160w_220h_1e_1c"',dd)[0]
# print(picture)
#将电影信息存入字典中
movie_dict={
"rank":rank,
"name":name,
"actor":actor,
"publish_data":publish_data,
"score":score,
"picture":picture,
}
print(movie_dict)
if __name__ == '__main__':
mao=Mao()
mao()
python爬虫--爬取-猫眼电影-代码
最新推荐文章于 2025-04-06 20:45:04 发布