爬取的网页地址为:https://movie.douban.com/top250

打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影。

那么要爬取所有电影的信息,就需要知道另外9个页面的URL链接。

第一页:https://movie.douban.com/top250

第二页:https://movie.douban.com/top250?start=25&filter=

第三页:https://movie.douban.com/top250?start=50&filter=

以此类推...

分析网页源代码:以首页为例

观察后可以发现: 
所有电影信息在一个ol标签之内,该标签的 class属性值为grid_view; 
每个电影在一个li标签里面; 
每个电影的电影名称在:第一个 class属性值为hd 的div标签 下的 第一个 class属性值为title 的span标签里; 
每个电影的评分在对应li标签里的(唯一)一个 class属性值为rating_num 的span标签里; 
每个电影的评价人数在 对应li标签 里的一个 class属性值为star 的div标签中 的最后一个数字; 
每个电影的短评在 对应li标签 里的一个 class属性值为inq 的span标签里。

Python主要模块:requests模块  BeautifulSoup4模块

>pip install requests

>pip install BeautifulSoup4

主要代码:

 Top250.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
# -*- coding:utf-8 -*-
import requests                             # requests模块
from bs4 import BeautifulSoup               # BeautifulSoup4模块
import re                                   # 正则表达式模块
import time                                 # 时间模块
import sys                                  # 系统模块

"""获取html文档"""
def getHTMLText(url, k):
    try:
        ):             # 首页
            kw = {}
        else:                   # 其它页
            kw = {'start':k, 'filter':''}
        r = requests.get(url, params = kw, headers = {'User-Agent': 'Mozilla/4.0'})
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print("Failed!")

"""解析数据"""
def getData(html):
    soup = BeautifulSoup(html, "html.parser")
    movieList = soup.find('ol', attrs = {'class':'grid_view'})                  # 找到第一个class属性值为grid_view的ol标签
    moveInfo = []
    for movieLi in movieList.find_all('li'):                                    # 找到所有li标签
        data = []
        # 得到电影名字
        movieHd = movieLi.find('div', attrs = {'class':'hd'})                   # 找到第一个class属性值为hd的div标签
        movieName = movieHd.find('span', attrs = {'class':'title'}).getText()   # 找到第一个class属性值为title的span标签
                                                                                # 也可使用.string方法
        data.append(movieName)

# 得到电影的评分
        movieScore = movieLi.find('span', attrs={'class':'rating_num'}).getText()
        data.append(movieScore)

# 得到电影的评价人数
        movieEval=movieLi.find('div',attrs={'class':'star'})
        movieEvalNum=re.findall(r]
        data.append(movieEvalNum)

# 得到电影的短评
        movieQuote = movieLi.find('span', attrs={'class': 'inq'})
        if(movieQuote):
            data.append(movieQuote.getText())
        else:
            data.append("无")

)))

# 将输出重定向到txt文件
output = sys.stdout
outputfile = open("moviedata.txt", 'w', encoding = 'utf-8')
sys.stdout = outputfile
outputMode = "{0:{4}^20}\t{1:^10}\t{2:^10}\t{3:{4}<10}"
)))
basicUrl = 'https://movie.douban.com/top250'
k = 
:
    html = getHTMLText(basicUrl, k)
    time.sleep()
    k += 
    getData(html)

outputfile.close()
sys.stdout = output

 参考出处:https://blog.csdn.net/linzch3/article/details/62444947

Python爬虫-豆瓣电影 Top 250的更多相关文章

  1. 用python爬取豆瓣电影Top 250

    首先,打开豆瓣电影Top 250,然后进行网页分析.找到它的Host和User-agent,并保存下来. 然后,我们通过翻页,查看各页面的url,发现规律: 第一页:https://movie.dou ...

  2. 爬取豆瓣电影TOP 250的电影存储到mongodb中

    爬取豆瓣电影TOP 250的电影存储到mongodb中 1.创建项目sp1 PS D:\scrapy> scrapy.exe startproject douban 2.创建一个爬虫 PS D: ...

  3. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  4. python爬虫: 豆瓣电影top250数据分析

    转载博客 https://segmentfault.com/a/1190000005920679 根据自己的环境修改并配置mysql数据库 系统:Mac OS X 10.11 python 2.7 m ...

  5. python爬虫-豆瓣电影的尝试

    一.背景介绍 1. 使用工具 Pycharm 2. 安装的第三方库 requests.BeautifulSoup 2.1 如何安装第三方库 File => Settings => Proj ...

  6. 豆瓣电影 Top 250

    import refrom urllib.request import urlopen def getPage(url): # 获取网页的字符串 response = urlopen(url) ret ...

  7. 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名

    正则表达式爬取豆瓣电影TOP前250的中英文名 1.首先要实现网页的数据的爬取.新建test.py文件 test.py 1 import requests 2 3 def get_Html_text( ...

  8. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

  9. 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

    放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...

随机推荐

  1. 编辑距离算法(Levenshtein)

    编辑距离定义: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数. 许可的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如 ...

  2. c# comboBox输出图文效果

    核心代码:重写DrawItem事件 void Event_CboDrawItem(object sender, DrawItemEventArgs e) { ) return; var cbo = s ...

  3. Mysql5.7主主互备安装配置

    一.安装说明 ======================================================================================= 环境:   ...

  4. drupal8 管理入门

    https://www.drupal.org/node/1896670 本节将介绍新的Drupal8用户,网站管理.它涵盖了使用管理员帐户,并提供从哪里开始的建议. 了解管理员帐户 在安装过程结束时, ...

  5. Android7.0 Doze模式分析(一)Doze介绍 &amp; DeviceIdleController

     參考:http://blog.csdn.net/gaugamela/article/details/52981984 在Android M中.Google就引入了Doze模式.它定义了一种全新的 ...

  6. 【jquery】jquery 实现许愿墙效果,可拖拽

    最近整理做过的项目,发现有个许愿墙的效果,今天拿出来给大家分享下. 先简单的介绍下功能点: 随机显示背景图或背景色 出现的位置随机 可以通过拖拽改变位置 好了,附上代码: <!doctype h ...

  7. Java学习路线图,Java学习计划建议

    怎么学习Java,这是很多新手经常遇到的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:     首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...

  8. 前端最全的 API 集锦

    window.getComputedStyle(el,':after')[attrName]------------------------------------------------------ ...

  9. dd&win32diskimager&软碟通Ultraiso 简单分析区别和长处

    在linux操作系统之中的话我们希望烧录镜像到U盘或者是其他的可移动存储设备的话,那么我们就是应当使用dd,但是我估量 在我们的论坛之中根本 之上只有很少的人使用这种工具,很多的使用linux的用户都 ...

  10. IDEA中 @override报错的解决方法

    今天用IDEA导入一个java工程时,碰上一个问题,代码中所有@override处标红,并提示:@override不支持对接口的实现. 网上百度了一下发现, 原因是引用JDK5版本中存在小bug的问题 ...