前言:
爬取豆瓣电影TOP250的数据,并将爬取的数据存储于Mysql数据库中
本文为整理代码,梳理思路,验证代码有效性——2020.1.4
环境:
Python3(Anaconda3)
PyCharm
Chrome浏览器
主要模块: 后跟括号内的为在cmd窗口安装的指令
requests(pip install requests)
lxml(pip install lxml)
re
pymysql(pip install pymysql )
time
1.
在Mysql名为mydb的数据库中新建数据表,下为建表语句
CREATE TABLE doubanmovie
(
NAME TEXT,
director TEXT,
actor TEXT,
style TEXT,
country TEXT,
release_time TEXT,
time TEXT,
score TEXT
)
ENGINE INNODB DEFAULT CHARSET = utf8;
2.
分析爬取的网页结构
https://movie.douban.com/top250
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
...
同豆瓣音乐,豆瓣图书的TOP250一样
我们对其构造列表解析式
urls = ['https://movie.douban.com/top250?start={}'.format(str(i))for i in range(0, 250, 25)]
3.
分析html结构,获取详情页链接
4.
进入详情页后,打开开发者工具(F12),分析html结构获取详细信息
代码如下:
演员取前五个为主演,不足五个的则全取
#标题
name = selector.xpath('//*[@id="content"]/h1/span[1]/text()')[0]
# 导演
director = selector.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0]
# 演员
actors_s = selector.xpath('//span[@class="attrs"]/a/text()')
actors = ""
if len(actors_s) > 5:
for s in actors_s[1:5]:
actors += (s + '/')
actors += actors_s[5]
else:
for s in actors_s[-1]:
actors += (s + '/')
actors += actors_s[-1]
# 类型
styles = selector