PYTHON爬虫爬取豆瓣电影的一周口碑电影排行榜
代码前准备:
1.使用Eclipse进行开发,关于eclipse搭建python的环境见:https://www.cnblogs.com/telwanggs/p/7016803.html
2.使用bs4的BeautifulSoup
3.使用MySQL for Python连接数据库。
4.数据库表的设计:
一、主函数代码(doubanInsect.py)
import datetime
import pymysql
from douban.ranke_dao import insert_message
from douban.ranke_dao import find_message
from douban.html_outputer import output_html
from bs4 import BeautifulSoup
from pip._vendor import requestsallMovie=[]
connect = pymysql.connect(host='localhost', user='root', password='1111', db='python_class')#这些你的数据库信息,db为数据库名def getHTMLText(url):#获取豆瓣电影网站的h5代码try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = 'utf-8'return r.textexcept:return ""def fillRanke(soup):#定位到一周口碑电影排行榜的div,并且获取每条数据并保存在allMoviedata = soup.find_all('div', class_="billboard-bd")for td in data:ltd = td.find_all('td')if len(ltd) == 0:continuesingleUniv = []for td in ltd:singleUniv.append(td.string)allMovie.append(singleUniv)def saveRanke():#将数据保存至mysql数据库i = 0ranke = 0name = ''date = datetime.datetime.now().strftime('%Y-%m-%d')while i < 20:if i % 2 == 0:ranke = int(i/2) + 1else:name = allMovie[0][i]insert_message(connect, ranke, name, date)i = i + 1def selectRanke():#将数据呈现在一个新的html中data = find_message(connect)output_html(data)def main():url = "https://movie.douban.com/"html = getHTMLText(url)soup = BeautifulSoup(html, "html.parser")fillRanke(soup)saveRanke()selectRanke()main()
二、关于数据库的插入与查找的操作(ranke_dao.py)
def insert_message(connect, ranke, name, date):#插入数据cursor = connect.cursor()sql = "INSERT INTO message(ranke, name, date) VALUES('%d','%s','%s')"%(ranke, name, date)cursor.execute(sql)connect.commit()connect.close();def find_message(connect):#查找数据cursor = connect.cursor()sql = "select ranke, name, date from message"cursor.execute(sql.encode('utf-8'))data = cursor.fetchall()connect.close();return data
三、将数据显示在html中(html_output.py)
def output_html(datas):i = 0fout = open('output.html', 'w')fout.write("<!DOCTYPE html>")fout.write("<html>")fout.write("<head>")fout.write("<meta charset=\"gbk\">")fout.write("</head>")fout.write("<body>")fout.write("<table>")for data in datas:if(i % 10 == 0):fout.write("<table>")fout.write("<h1>%s</h1>"%data[2])fout.write("<tr>")fout.write("<td>%d</td>"%data[0])fout.write("<td>%s</td>"%data[1])fout.write("</tr>")if(i % 9 == 0 and i != 0):fout.write("</table>")i = i + 1fout.write("</body>")fout.write("</html>")fout.close()
最后效果展示(之前运行过一次,所以有两次数据展示):
mysql中:
out_put.html的效果:
------------------------------------分界线-------------------------------------------------
将功能升级,使其可以跳转查看预告片。
豆瓣有两个ID我们需要获取。
第一个就是每个电影的ID。
第二个就是通过每个电影的ID进入相应界面来获取的每个电影的预告片ID。(通过F12查看)
所以我们修改doubanInsect.py中的fillRanke代码,用来获取电影ID,并存到allId中。
def fillRanke(soup):data = soup.find_all('div', class_="billboard-bd")for td in data:ltd = td.find_all('td')for i in td.find_all('a'):allId.append(i['href'][33:])if len(ltd) == 0:continuesingleUniv = []for td in ltd:singleUniv.append(td.string)allMovie.append(singleUniv)
创建一个新的py文件,传给他电影ID,通过电影ID爬取预告片ID并返回。
import datetime
import pymysql
from douban.ranke_dao import insert_message
from douban.ranke_dao import find_message
from douban.html_outputer import output_html
from bs4 import BeautifulSoup
from pip._vendor import requests
import redef getHTMLText(url)try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = 'utf-8'return r.textexcept:return ""def fillRanke(soup):#定位到一周口碑电影排行榜的div,并且获取每条数据并保存在allMoviedata = soup.find_all('a', class_="related-pic-video")for td in data:return td['href'][33:]def cha(url):html = getHTMLText(url)soup = BeautifulSoup(html, "html.parser")return fillRanke(soup)
修改doubanInsect.py中的main代码,添加循环调用新的py文件的代码,获取每一个预告片ID。
def main():for i in range(0,10):new_url = 'https://movie.douban.com/subject/' + allId[i]pianId.append(cha(new_url))
最后将预告片拼接为预告片URL用网页显示。
在这里插入图片描述
PYTHON爬虫爬取豆瓣电影的一周口碑电影排行榜相关推荐
- Python爬虫 爬取豆瓣电影TOP250
Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...
- python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中
我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...
- Python爬虫爬取豆瓣电影评论内容,评论时间和评论人
Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...
- python爬虫爬取豆瓣读书Top250
python爬虫爬取豆瓣读书Top250 话不多说,直接上代码! from urllib.request import urlopen, Request from bs4 import Beautif ...
- Python爬虫爬取豆瓣电影Top250
爬虫爬取豆瓣Top250 文章目录 爬虫爬取豆瓣Top250 完整代码 第一步获取整个网页并以html来解析 正则表达式来匹配关键词 所有信息写入列表中 存入Excel中 效果如图 本文学习自B站UP ...
- python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息
这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...
- 用Python爬虫爬取豆瓣电影、读书Top250并排序
更新:已更新豆瓣电影Top250的脚本及网站 概述 经常用豆瓣读书的童鞋应该知道,豆瓣Top250用的是综合排序,除用户评分之外还考虑了很多比如是否畅销.点击量等等,这也就导致了一些近年来评分不高的畅 ...
- python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息
hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字.评分.评分人数以及短评. 代码实现如下:#第一个最简单的爬虫 #爬取了豆瓣to ...
- python爬虫爬取豆瓣top250电影影评
信息系统课程项目,小组准备做一个电影推荐系统,自己选了觉得很有趣的资源模块,需要获取电影的评价资源等信息.花了大约一周看Web Scraping with Python这本书,对爬虫有了大体但是初略的 ...
- python爬虫——爬取豆瓣TOP250电影
相信很多朋友在看一部电影的时候喜欢先去豆瓣找一下网友对该片的评价.豆瓣作为国内最权威的电影评分网站,虽然有不少水军和精日精美分子,但是TOP250的电影还是不错的,值得一看. 爬取目标 本文将爬取豆瓣 ...
最新文章
- 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )
- redis session共享中的序列化问题
- STL:priority_queue
- 【Cockpit】 如何组织管理多台服务器?
- linux 命令提示符 时间,在LINUX的命令提示符及CMD命令提示符中显示时间
- LeetCode 101. 对称二叉树(递归循环)
- 美团酒旅起源数据治理平台的建设与实践
- cuda笔记-一个Block多线程求卷积
- java中怎么判断字符相等_Java中如何判断两个字符串相等
- css的font修改颜色,css的font字体颜色如何设置
- 大数据全样而非抽样原理_干货 | 大数据思维的十大核心原理(二)
- JavaCV的摄像头实战之七:推流(带声音)
- 【MySQL高性能】Canal数据同步神器
- Pikachu漏洞靶场 敏感信息泄露
- 时间序列pandas的创建date_range+时间戳的序列化to_datetime+重采样resample+将字符串时间转化为时间序列PeriodIndex(传入年月日)
- 智能交通系列产品-电子警察(宇视)
- 如何创建sis文件——PKG文件格式
- 天龙八部玄武岛BOSS
- 用python造数据
- 用幂律分布研究工资收入
热门文章
- 移动端input、textarea、div(contenteditable )输入框正则过滤(兼容ios)
- [ 云计算 华为云 ] 华为云开天 aPaaS:构建高效的企业数字化平台(上)
- 【我的生活】旅游计划--2019
- 低成本、大容量、高交互…Polkadot 引领 GameFi 实现新突破
- 旅游十一个城市的货郎担问题
- python语言创意绘画-银川童程童美Python少儿编程班价格
- 给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排
- OpenStack 运维 - 部署Nova组件 [T版]
- Flutter 基于Dio封装网络层
- 计算机控制技术期末复习