Python 爬取 猫眼
1.
import requests
import re
import pymongo MONGO_URL='localhost'#建立连接
MONGO_DB='Maoyan'#创建数据库 client=pymongo.MongoClient(MONGO_URL)#连接数据库
db=client[MONGO_DB]#创建数据库 #获得一页的响应提信息
def get_one_page(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
response = requests.get(url,headers=headers)#发送请求,获得响应
return response.text #获得响应体信息,并返回 #解析请求的信息,并通过正则表达式提取想要的信息:电影名称、排名等
def parse_page(html):
#通过正则表达式进行匹配
pattern=re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src.*?"(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>',re.S)
results=re.findall(pattern,html)#获得单页响应头的信息,获得的是一个列表
#对产生的列表list进行for循环
for result in results:
#通过字典(dict),组建信息
movies={
'rate':result[0],
'img_url':result[1],
'name':result[2],
'actor':result[3].strip()[3:],
'time':result[4][5:],
'score':result[5]+result[6]
}
#保存到数据库
save_mongo(movies) #保存到数据库的函数
def save_mongo(info):
if db['Movies'].insert(info):#将信息插入到数据库
print('保存成功:',info)
else:
print('保存失败:',info) #实现主流程
def main():
#有10页,通过来获取每一页的信息
for i in range(10):
url='http://maoyan.com/board/4?offset='+str(i*10)#构建每一页的请求url
html=get_one_page(url)#进行请求
parse_page(html)#进行响应体的解析,并保存到数据库 if __name__=='__main__':
main()#调用主体函数
2.
import requests
import re
import pymongo MONGO_URL='localhost'#
MONGO_DB='Maoyan'
MONGO_TABLE='MoviesTop100' client=pymongo.MongoClient(MONGO_URL)
db=client[MONGO_DB] def save_to_mongo(info):
if db[MONGO_TABLE].insert(info):
print('保存成功',info)
else:
print('保存失败',info) def get_one_page(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
html = requests.get(url=url,headers=headers).text
return html def get_movies_info(html):
pattern=re.compile('<dd>.*?title="(.*?)".*?<p.*?star.*?>(.*?)</p>.*?<p.*?releasetime.*?>(.*?)</p>.*?<i.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>',re.S)
results = re.findall(pattern,html)
for result in results:
movies = {}
movies['name']=result[0]
movies['actor']=result[1].strip()[3:]
movies['time']=result[2].strip()[5:]
movies['rate']=result[3]+result[4]
save_to_mongo(movies) #主体函数
def main():
for i in range(10):
url = 'http://maoyan.com/board/4?offset='+str(i*10)
html=get_one_page(url)#完成请求,获取响应体的超文本
get_movies_info(html)#完成信息提取 if __name__=='__main__':
main()
Python 爬取 猫眼的更多相关文章
- Python 爬取 猫眼 top100 电影例子
一个Python 爬取猫眼top100的小栗子 import json import requests import re from multiprocessing import Pool #//进程 ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- python 爬取猫眼电影top100数据
最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...
- 票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛
今年的国庆档电影市场的表现还是比较强势的,两名主力<我和我的家乡>和<姜子牙>起到了很好的带头作用. <姜子牙>首日破 2 亿,一举刷新由<哪吒之魔童降世&g ...
- Python 爬取猫眼电影最受期待榜
主要爬取猫眼电影最受期待榜的电影排名.图片链接.名称.主演.上映时间. 思路:1.定义一个获取网页源代码的函数: 2.定义一个解析网页源代码的函数: 3.定义一个将解析的数据保存为本地文件的函数: ...
- python爬取猫眼电影top100
最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/b ...
- Python爬取猫眼电影《飞驰人生》47858万条评论并对其进行数据分析
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Yura不说数据说 ,PYuraL PS:如有需要Python学习资 ...
- Python爬取猫眼电影100榜并保存到excel表格
首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...
- Python爬取猫眼top100排行榜数据【含多线程】
# -*- coding: utf-8 -*- import requests from multiprocessing import Pool from requests.exceptions im ...
- 记录python爬取猫眼票房排行榜(带stonefont字体网页),保存到text文件,csv文件和MongoDB数据库中
猫眼票房排行榜页面显示如下: 注意右边的票房数据显示,爬下来的数据是这样显示的: 网页源代码中是这样显示的: 这是因为网页中使用了某种字体的缘故,分析源代码可知: 亲测可行: 代码中获取的是国内票房榜 ...
随机推荐
- C++核心编程 3 函数提高
函数默认参数 在C++中,函数的形参列表中的形参是可以有默认值的: 语法:返回值类型 函数名 (参数 = 默认值){ } 实例: #include<iostream> using name ...
- Apache ShardingSphere 在京东白条场景的落地之旅
京东白条使用 Apache ShardingSphere 解决了千亿数据存储和扩容的问题,为大促活动奠定了基础. 2014 年初,"京东白条"作为业内互联网信用支付产品,数据量爆发 ...
- 实战经验分享:使用 PyO3 来构建你的 Python 模块
PyO3 主要用于创建原生 Python 的扩展模块.PyO3 还支持从 Rust 二进制文件运行 Python 代码并与之交互,可以实现 rust 与 Python 代码共存.在一些对性能要求较高的 ...
- MSSQL还原数据库,更改用户登陆权限
有的时候还原完数据库后,使用账号登陆不进去,报告没有这个用户的时候,可以使用以下sql解决: sp_change_users_login 'update_one','username','userna ...
- vue3 element-plus 配置json快速生成table列表组件,提升生产力近500%(已在公司使用,持续优化中)
️本文为博客园首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gith ...
- django3上线部署踩的坑
好久没有用过django写项目了,最近公司开发个官网,一时兴起就拿来练练手,这不用不知道,一用吓一跳啊. 才多久,版本都到3.0了. 踩坑一:运行项目时失败报错,后来查找资料发现, 当你使用djang ...
- 不会SQL也能做数据分析?浅谈语义解析领域的机会与挑战
笔者按: 在第5次AI TIME PhD Debate上,笔者邀请了部分国内外语义解析领域的杰出华人学者共话语义解析的过去,现状和未来.本博客为笔者根据视频讨论总结的干货整理.对原视频感兴趣的同学可以 ...
- SignalR 在React/GO技术栈的生产应用
哼哧哼哧半年,优化改进了一个运维开发web平台. 本文记录SignalR在react/golang 技术栈的生产小实践. 1. 背景 有个前后端分离的运维开发web平台, 后端会间隔5分钟同步一次数据 ...
- 盘点一下Redis中常用的Java客户端,或者咱们手写一个?
Java中那些Redis的客户端 前面我们的所有操作都是基于redis-cli来完成的,那么我们要在Java中操作Redis,怎么做呢?首先我们先来了解一下Redis Serialization Pr ...
- C#特性知识图谱-一、委托
一. 委托 1.1 委托定义 委托可以看成是一个方法的容器,将某一具体的方法装入后就可以把它当成方法一样调用.一个委托类型的变量可以引用任何一个满足其要求的方法.委托类似于C语言中的函数指针,但并不完 ...