爬取的网页地址为: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. [进程]kill 9和15,以及pkill, killall

    转自:https://www.cnblogs.com/liuhouhou/p/5400540.html 大家对kill -9 肯定非常熟悉,在工作中也经常用到.特别是你去重启tomcat时.可是多半看 ...

  2. 通过ambari安装hadoop集群(二)

    开始安装,输入主机名字,然后选择私钥 注意java_home那里需要改为/usr/jdk64/jdk1.6.0_31,然后点击确认,它会出一个警告提示,别管他就行. 等待安装完毕之后,就会出现成功的提 ...

  3. Flutter 1.0 正式版: Google 的便携 UI 工具包

    Flutter 1.0 正式版: Google 的便携 UI 工具包 文 / Tim Sneath,Google Dart & Flutter 产品组产品经理 Flutter 是 Google ...

  4. 微信小程序——页面之间传递值

    小程序页面传值的方式: 1.正向传值:上一页面 -->  下一页面 url传值 本地储存 全局的app对象 2.反向传值:下一页面 -->  上一页面 本地储存 全局的app对象 先说一下 ...

  5. PHP高级程序员必学

    业务增长,给你的网站带来用户和流量,那随之机器负载就上去了,要不要做监控?要不要做负载均衡?用户复杂了,要不要做多终端兼容?要不要做CDN?数据量大了,要不要做分布?垂直分还是横向分?系统瓶颈在哪里? ...

  6. 【转】IT族室内锻炼身体的小妙招

    上班族.久坐族近年的健康状况令人堪忧,由于缺乏运动加上长期面对辐射,使上班族身体状况越来越差.专家建议上班族应多加运动,只需小小的动作就能轻松获得健康! 梳头:用木梳从前额至头顶部向后部梳刷,逐渐加快 ...

  7. OpenGL OBJ模型加载.

    在我们前面绘制一个屋,我们可以看到,需要每个立方体一个一个的自己来推并且还要处理位置信息.代码量大并且要时间.现在我们通过加载模型文件的方法来生成模型文件,比较流行的3D模型文件有OBJ,FBX,da ...

  8. 计算机网络——链路层协议

    一. 链路层的功能 可靠交付:在高差错的链路,如无线链路,可以进行可靠交付:对于其它的有线,可以是多余的: 流量控制:防止接收方的缓存区溢出,帧丢失: 差错检测与差错纠正:在硬件上实现了: 二.多路访 ...

  9. 在Unity场景中控制日夜的轮转

    一.介绍 目的:通过在Unity场景中添加C#脚本完成日夜轮转的效果. 软件环境:Unity 2017.3.0f3,VS2013 二.操作过程 通过拖拽场景中的Directional Light我们知 ...

  10. 用Python中的tkinter模块作图

    tkinter 可以用来创建完整的应用程序,比如简单的字处理软件,还有简单的绘图软件. 一.创建一个可以点的按钮 用tkinter创建一个带按钮的简单程序,代码如下: >>> fro ...