参考文档:https://weread.qq.com/web/reader/37132a705e2b2f37196c138k98f3284021498f137082c2e

说明:我才接触网络爬虫,在看《python网络爬虫入门到实践》一书时,作者写了个实例获取豆瓣电影TOP250的所有电影的电影名称,我在此基础上进行了更进一步的改进,获取了所有的相关信息,并用表格将这些信息保存下来。

相关知识:

网络爬虫分为三个步骤: 第一步:伪装为浏览器访问;第二步:解析网页代码;第三步:存储数据。

(1)第一步使用requests模块实现

我们需要使用到request模块的get()方法,该方法模仿为浏览器访问,返回的是网页代码内容。

参考文档:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#url

(2)第二步使用BeautifulSoup模块实现

我们需要用到BeautifulSoup的find_all()方法。使用find_all()方法可通过标签的不同属性过滤html页面。定义如下:

find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)

name:可以传入一个标签或多个标签名称组成的python列表。例如:findAll([‘h1’, ‘h2’])

attrs:用一个python字典封装的一个标签的若干属性和对应的属性值。例如:findAll(‘span’, {‘class’: {‘green’, ‘red’}})

recursive:布尔变量,若为True,findAll会根据要求去查找标签参数的所有子标签,以及子标签的子标签。若为False,findAll只查找文档的一级标签。

text:用标签的文本内容去匹配,而不是标签的属性。

limit:如果只对网页中获取的前x项感兴趣,可设置它。

kwargs:选择那些具有指定属性的标签。

参考链接:https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html

(3)第三步我们将数据存放在表格中。

我们使用xlwt模块进行表格的写入操作,将获取到的信息保存到表格中。

代码如下:

 1 # encoding:utf-8
2
3 '''
4 目的:获取豆瓣电影TOP250的所有电影的相关信息,网页地址为:https://movie.douban.com/。
5 环境:python 3.7.3
6 所需的库:requests、BeautifulSoup、xlwt
7 '''
8
9 import logging
10 import xlwt
11 import requests
12 import string
13 from bs4 import BeautifulSoup
14
15 headers = {
16 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',\
17 'Host': 'movie.douban.com'
18 }
19
20 # 将获取的信息保存到表格中
21 def save_movie(content):
22 workbook = xlwt.Workbook(encoding = 'ascii')
23 worksheet = workbook.add_sheet('Movies info')
24 style = xlwt.XFStyle() # 初始化样式
25 font = xlwt.Font() # 为样式创建字体
26 font.name = 'Times New Roman'
27 font.bold = True # 黑体
28 font.underline = True # 下划线
29 font.italic = True # 斜体字
30 style.font = font # 设定样式
31 worksheet.write(0, 0, 'title')
32 worksheet.write(0, 1, 'actor')
33 worksheet.write(0, 2, 'score')
34 worksheet.write(0, 3, 'quote')
35 for i, item in enumerate(content):
36 for j in range(4):
37 worksheet.write(i+1, j, content[i][j])
38 workbook.save('./movie_info.xls') # 保存文件
39
40
41 # 获取与move相关的信息
42 # 主要包括:title、actor、score、quote
43 def get_moves():
44 movies_info = []
45 movies_titles = []
46 movies_actors = []
47 movies_scores = []
48 movies_quotes = []
49
50 for i in range(10):
51 link = 'https://movie.douban.com/top250?start=%d&filter=' % i*25
52 r = requests.get(link, headers=headers, timeout=10)
53 print (str(i+1), '页响应状态码:', r.status_code)
54 soup = BeautifulSoup(r.text, 'lxml')
55 soup = BeautifulSoup(r.text, 'lxml')
56 div_hd_list = soup.findAll('div', {'class': 'hd'})
57 div_bd_list = soup.findAll('div', {'class': 'bd'})
58 score_list = soup.findAll('span', {'class': 'rating_num'})
59 quote_list = soup.findAll('p', {'class': 'quote'})
60 for item in div_hd_list:
61 title = item.a.span.text.strip()
62 movies_titles.append(title)
63 for i, item in enumerate(div_bd_list):
64 if (i == 0): continue
65 content = item.p.text.strip().replace(u'\xa0', u'')
66 actor = content[: content.find(u'主演')]
67 actor = actor[:actor.find(u'主')]
68 movies_actors.append(actor)
69 for item in score_list:
70 score = item.text.strip()
71 movies_scores.append(score)
72 for item in quote_list:
73 quote = item.span.text.strip()
74 movies_quotes.append(quote)
75 print (len(movies_actors))
76 print (len(movies_quotes))
77 for i in range(len(movies_titles)):
78 item = [movies_titles[i], movies_actors[i], movies_scores[i], movies_quotes[i]]
79 movies_info.append(item)
80
81 return movies_info
82
83
84 if __name__ == "__main__":
85 movies_info = get_moves()
86 save_movie(movies_info)

上述代码在获取“导演”这个信息时,使用div_bd_list = soup.findAll('div', {'class': 'bd'})获取到的列表第一个元素需要除去,不是我们想要的元素。

代码中的findAll()方法就是find_all()方法,findAll = find_all。

另外代码中的header信息可以在浏览器(我使用的是chrome)中获得:在chrome中点击检查,在选择network可以看到Request Headers请求头的主要信息。

python获取豆瓣电影TOP250的所有电影的相关信息的更多相关文章

  1. python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式

    一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...

  2. 爬虫实战【11】Python获取豆瓣热门电影信息

    之前我们从猫眼获取过电影信息,而且利用分析ajax技术,获取过今日头条的街拍图片. 今天我们在豆瓣上获取一些热门电影的信息. 页面分析 首先,我们先来看一下豆瓣里面选电影的页面,我们默认选择热门电影, ...

  3. Python 爬虫:豆瓣电影Top250,包括电影导演、类型、年份、主演

    结果输出到文本文件中. import codecs import requests from bs4 import BeautifulSoup headers={'User-Agent': 'Mozi ...

  4. python获取豆瓣日记

    最近迷上了看了四个春天,迷上了饭叔的豆瓣日记,想全部抓取下来,简单了写了下面的脚本 import urllib.request import os from bs4 import BeautifulS ...

  5. Python网络爬虫 - 爬取中证网银行相关信息

    最终版:07_中证网(Plus -Pro).py # coding=utf-8 import requests from bs4 import BeautifulSoup import io impo ...

  6. iOS获取手机相关信息

    iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t ...

  7. 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

    在本篇博文当中,将会教会大家如何使用高性能爬虫,快速爬取并解析页面当中的信息.一般情况下,如果我们请求网页的次数太多,每次都要发出一次请求,进行串行执行的话,那么请求将会占用我们大量的时间,这样得不偿 ...

  8. Python小爬虫——抓取豆瓣电影Top250数据

    python抓取豆瓣电影Top250数据 1.豆瓣地址:https://movie.douban.com/top250?start=25&filter= 2.主要流程是抓取该网址下的Top25 ...

  9. python爬虫 Scrapy2-- 爬取豆瓣电影TOP250

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  10. [Python] 豆瓣电影top250爬虫

    1.分析 <li><div class="item">电影信息</div></li> 每个电影信息都是同样的格式,毕竟在服务器端是用 ...

随机推荐

  1. 如何用一行 CSS 实现 10 种现代布局

    现代 CSS 布局使开发人员只需按几下键就可以编写十分有意义且强大的样式规则.上面的讨论和接下来的帖文研究了 10 种强大的 CSS 布局,它们实现了一些非凡的工作. 01. 超级居中:place-i ...

  2. pid循迹小车的实现,arduino

    帮我写一个Arduino循迹小车的程序,小车前面有并列8个红外发射接收传感器,每个红外发射接收传感器为1cm宽,地面循迹的线是大约2cm宽黑色的线,地面其他位置是白色的,要求循迹小车运行的速度快,使用 ...

  3. ESXI 6.5 零基础从安装到批量生成/管理虚拟机简易教程

    制造U盘安装盘 1 先提前下载好,ESXI 6.5 ISO文件. 2 下载制作U盘安装工具,RUFUS. Rufus非常小巧的绿色EXE文件,默认配置选中ISO文件就可以,点击开始,就自动制作,非常方 ...

  4. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力

    作者| 郑超 阿里云高级开发工程师 随着物联网技术以及 5G 技术的高速发展,将云计算的能力延伸至边缘设备端,并通过中心进行统一交付.管控,已成为云计算的重要发展趋势.为服务更多开发者把握这一趋势,5 ...

  5. PolarDB-X 高可用存储服务: 基于 X-Paxos 一致性协议

    简介: 摘自刘永平(慕少)阿里云 PolarDB-X 技术专家在PolarDB-X | 新品发布会中的讲解内容. 了解更多PolarDB-X 内容:https://developer.aliyun.c ...

  6. 技术干货丨云企业网CEN2.技术揭秘

    ​简介:随着企业数字化转型的加速,越来越多的企业选择了将业务部署在云上,这其中有超过20%的企业有全球组网的需求,这就使得云上网络的规模越来越大,复杂度也越来越高,为了应对这些变化,阿里云推出了升级版 ...

  7. C# 二进制数组与结构体的互转

    本文将告诉大家在 dotnet 里面的二进制基础处理知识,如何在 C# 里面将结构体数组和二进制数组进行相互转换的简单方法 尽管本文属于基础入门的知识,但是在阅读之前还请自行了解 C# 里面的结构体内 ...

  8. 使用 NestJS 和 qrcode.js 创建 QR 码生成器 API

    前言 QR码(Quick Response Code)是一种二维码,于1994年开发.它能快速存储和识别数据,包含黑白方块图案,常用于扫描获取信息.QR码具有高容错性和快速读取的优点,广泛应用于广告. ...

  9. Multisim仿真验证之二极管的特性参数

    二极管的特性 正向 R1 10% 20% 30% 50% 70% 90% Vd/mV 299 543 583 608 627 658 Id/mA 0.01 0.1 0.6 1.4 2.8 7.2 rd ...

  10. linux文件查找工具详解

    linux文件查找详解 目录 linux文件查找详解 1.linux文件查找工具 1.1 find命令详解 1.1.1 根据文件名查找 1.1.2 根据属主属组查找 1.1.3 根据文件类型查找 1. ...