pyhon-爬虫实战抓取豆瓣top250到mysql
采集地址https://movie.douban.com/top250
一、创建mysql数据库
CREATE TABLE `t_doubantop` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`num` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`charactor` varchar(255) DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL,
`score` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=273 DEFAULT CHARSET=utf8;
二、采集代码
from bs4 import BeautifulSoup
import pymysql
import requests
import re
import os #链接数据库
def connect_db():
connect = pymysql.connect( # 连接数据库
user="root",
password="password",
host="127.0.0.1",
db="test",
port=3306,
charset=("utf8"), # 注意编码一定要设置,否则gbk你懂的
use_unicode=True,
)
return connect def get_html(web_url): # 爬虫获取网页没啥好说的
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/8.5.1.15355"}
html = requests.get(url=web_url, headers=header).text
Soup = BeautifulSoup(html, "lxml")
data = Soup.find("ol").find_all("li") # 还是有一点要说,就是返回的信息最好只有你需要的那部分,所以这里进行了筛选
return data def get_info(all_move, connect, cursor):
for info in all_move:
# 编号
nums = re.findall(r'<em class="">\d+</em>', str(info), re.S | re.M) # 编号我使用的是正则表达式来获取
nums = re.findall(r'\d+', str(nums), re.S | re.M)
num = nums[0] # 名字
names = info.find("span") # 名字比较简单 偷了一下懒直接获取第一个span就是
name = names.get_text() # 导演
charactors = info.find("p") # 这段信息中有太多非法符号你需要替换掉
charactor = charactors.get_text().replace(" ", "").replace("\n", "") # 使信息排列规律
charactor = charactor.replace("\xa0", "").replace("\xee", "").replace("\xf6", "").replace("\u0161", "").replace("\xf4", "").replace("\xfb", "").replace("\u2027", "") # 评语
remarks = info.find_all("span", {"class": "inq"})
print(remarks)
if remarks: # 这个判断是因为有的电影没有评语,你需要做判断
remark = remarks[0].get_text().replace("\u22ef", "")
else:
remark = "此影片没有评价" # 评分
scores = info.find_all("span", {"class": "rating_num"}) # 没啥好说 匹配就行
score = scores[0].get_text() data = {'num':num, 'name':name, 'charactor':charactor, 'remark':remark, 'score':score}
print(data)
# 保存数据
cursor.execute("insert into t_doubantop(num,name,charactor,remark,score)values(%s,%s,%s,%s,%s)",
[data['num'], data['name'], data['charactor'], data['remark'], data['score']])
# 提交
connect.commit()
return if __name__ == "__main__":
connect = connect_db()#链接数据库
cursor = connect.cursor() # 设置游标
page = 0 # 初始化页数,TOP一共有250部 每页25部
while page <= 225:
web_url = "https://movie.douban.com/top250?start=%s&filter=" % page
all_move = get_html(web_url) # 返回每一页的网页
data = get_info(all_move, connect, cursor) # 匹配对应信息并保存
page += 25 connect.close() # 最后记得关掉连接
三、数据库保存结果

pyhon-爬虫实战抓取豆瓣top250到mysql的更多相关文章
- Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗
Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...
- Python爬虫实战---抓取图书馆借阅信息
Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...
- Scrapy爬虫入门系列4抓取豆瓣Top250电影数据
豆瓣有些电影页面需要登录才能查看. 目录 [隐藏] 1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...
- Python爬虫之抓取豆瓣影评数据
脚本功能: 1.访问豆瓣最受欢迎影评页面(http://movie.douban.com/review/best/?start=0),抓取所有影评数据中的标题.作者.影片以及影评信息 2.将抓取的信息 ...
- 简单的爬虫例子——爬取豆瓣Top250的电影的排名、名字、评分、评论数
爬取思路: url从网页上把代码搞下来bytes decode ---> utf-8 网页内容就是我的待匹配的字符串ret = re.findall(正则,待匹配的字符串), ret 是所有匹配 ...
- 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充
今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...
- 抓取豆瓣的电影排行榜TOP100
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 一个简单的Python爬虫, 用于抓取豆瓣电影Top前100的电影的名称 ...
- Python爬虫----抓取豆瓣电影Top250
有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...
- Python小爬虫——抓取豆瓣电影Top250数据
python抓取豆瓣电影Top250数据 1.豆瓣地址:https://movie.douban.com/top250?start=25&filter= 2.主要流程是抓取该网址下的Top25 ...
随机推荐
- SVN检出忽略文件夹文件
具体实现:1.在解决方案目录上点右键2.在乌龟SVN菜单中找到"属性"点开 3.在弹出窗中点 新建--其他 4.在弹出窗中的"属性"中选择"svn: ...
- java简答题
1.什么是java的平台无关性? Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件.也就是一处编写,处处运行.这就是java的跨平台性. 2.在一台 ...
- shell脚本小实例
本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixsch ...
- hdu Surround the Trees
题目链接:戳我 凸包模板 #include<iostream> #include<cstdio> #include<cstring> #include<alg ...
- emacs 考场配置
先存在这里,免得等回来乱搞的时候把自己的配置搞丢了qwq (custom-set-variables '(custom-enabled-themes (quote (tango-dark)))) (c ...
- 深入了解java虚拟机(JVM) 第六章 垃圾回收算法
一.标记清除算法 标记清除算法顾名思义,就是将需要回收的对象进行标记,然后进行清除.那么这个算法就有标记和清除两种过程.标记过程主要是通过可达性分析算法进行判断存活对象,然后遍历所有的对象来找到需要回 ...
- OCP 12c最新考试题库及答案(071-2)
2019-02-12 16:23:54 2.(4-7) choose the best answer:You need to display the first names of all cust ...
- 【bzoj5084】 hashit(广义SAM+set)
题面 传送门 题解 后缀平衡树是个啥啊我不会啊-- 那么我们来考虑一下\(SAM\)的做法好了 不难发现它的本义是要我们维护一棵\(trie\)树,并求出\(trie\)树上每一个节点到根的这段串的不 ...
- sizeWithFont:的替代方法
sizeWithFont:的替代方法 -(CGFloat)changeStationWidth:(NSString *)string{ UIFont * textFont = [UIFont syst ...
- windows10下使用ubuntu,并搭建nodejs环境
1.首先要在win10的设置里打开开发人员使用模式 2.在bash下,下载ubuntu系统 3.安装git,因为要把下载nvm的话,需要git sudo apt-get install git 4.安 ...