第一个爬虫经历----豆瓣电影top250(经典案例)
因为要学习数据分析,需要从网上爬取数据,所以开始学习爬虫,使用python进行爬虫,有好几种模拟发送请求的方法,最基础的是使用urllib.request模块(python自带,无需再下载),第二是requests模块(第三方库,需要pip install requests),第三是直接使用scaper模块(第三方库,需要下载)。
本次开发使用的工具是jupyter notebook,使用到的模块主要有requests(模拟http请求,详情请看http://2.python-requests.org/zh_CN/latest/user/quickstart.html),BeautifulSoup(处理请求的数据,以dom的形式进行处理,详细查看https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/),pandas(将处理后的数据存储为DataFrame,如果想详细了解此库可以查看https://www.cnblogs.com/lvpengbo/p/10851096.html),re(正则表达式库 https://docs.python.org/zh-cn/3/library/re.html)。
具体代码如下:
import requests
import pandas as pd
import re
from bs4 import BeautifulSoup
url='https://movie.douban.com/top250?start={}&filter='
headers={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"}
movie_list=[]
movie_rank=[]
movie_score=[]
people_num=[]
movie_year=[]
county_list=[]
director_list=[]
quote_list=[]
for i in range(10):
start=i*25
request_url=url.format(start)
response=requests.get(request_url,headers=headers)
data=response.content.decode('utf-8')
soup=BeautifulSoup(data,'html.parser')
all_item_divs=soup.find_all(class_='item')
for item in all_item_divs:
movie_list.append(item.find('span').get_text())
movie_rank.append(item.find('em').get_text())
movie_score.append(item.find('span',class_='rating_num').get_text())
num=item.find('div',class_='star').contents[7].get_text()
people_num.append(int(re.findall('\d+',num)[0]))
br_value=item.find('p').get_text()
movie_year.append(re.findall('\d+',br_value)[0].strip())
director=list(filter(None,br_value.split('/')[0].split(':')[1].split(' ')))[0]
director_list.append(director)
county_list.append(br_value.split('/')[2].strip())
if item.find('span',class_='inq')==None:
quote_list.append('')
else:
quote_list.append(item.find('span',class_='inq').get_text())
df=pd.DataFrame(
{'排名':movie_rank,
'电影名称':movie_list,
'上映日期':movie_year,
'国家':county_list,
'导演':director_list,
'评分':movie_score,
'评论人数':people_num,
'经典台词':quote_list})
df.to_csv('豆瓣250.csv')
数据集结果:国家这列有问题,字符串切割的问题,主演和电影类型也是因为字符串切割问题没有获取到

第一个爬虫经历----豆瓣电影top250(经典案例)的更多相关文章
- 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250
在本篇博文当中,将会教会大家如何使用高性能爬虫,快速爬取并解析页面当中的信息.一般情况下,如果我们请求网页的次数太多,每次都要发出一次请求,进行串行执行的话,那么请求将会占用我们大量的时间,这样得不偿 ...
- <爬虫实战>豆瓣电影TOP250(三种解析方法)
1.豆瓣电影排行.py # 目标:爬取豆瓣电影排行榜TOP250的电影信息 # 信息包括:电影名字,上映时间,主演,评分,导演,一句话评价 # 解析用学过的几种方法都实验一下①正则表达式.②Beaut ...
- 爬虫_豆瓣电影top250 (正则表达式)
一样的套路,就是多线程还没弄 import requests import re import json headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) ...
- Python 爬虫:豆瓣电影Top250,包括电影导演、类型、年份、主演
结果输出到文本文件中. import codecs import requests from bs4 import BeautifulSoup headers={'User-Agent': 'Mozi ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- python爬虫 Scrapy2-- 爬取豆瓣电影TOP250
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- Python爬虫----抓取豆瓣电影Top250
有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...
- 练习:一只豆瓣电影TOP250的爬虫
练习:一只豆瓣电影TOP250爬虫 练习:一只豆瓣电影TOP250爬虫 ①创建project ②编辑items.py import scrapyclass DoubanmovieItem(scrapy ...
- 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用
学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...
随机推荐
- 计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项)
计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项) 发布时间:2016-12-07 22:46:19来源:linux网站作者:乐百川 BIOS是什么 BIOS全称是基本输 ...
- HTTP-web服务器接收到client请求后的处理过程(很详细)
1. 客户发起情况到服务器网卡: 2. 服务器网卡接受到请求后转交给内核处理: 3. 内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程 4. Web服务器进程根据用户请求,向内核进 ...
- LNOI 2019 旁观记
真.懵逼. 退役选手进队了......我忽然后悔自己没去摸鱼...... 但是想一想毕竟有三分之一限制,我也搞不过那帮大佬...... 毕竟zhx还提前一周复习了一下呢 挂一个zhx大佬的博客 传送门 ...
- Redis学习之热点key重建
在Redis的生产环境中,大量客户端连接请求某一个key,但都需要从DB中获取数据,来回写数据库,如下图: <ignore_js_op> 造成的问题: 大量的线程请求数据库,造成数据库压力 ...
- HHP|HPLC-MS/MS|PMT|PST|de novo|
生物医学大数据 Protein 应用 人类蛋白质组计划 Gene的存在要依靠在蛋白水平确认基因真实存在. 蛋白质组是确定时间地点的研究单元的蛋白质总体,因为时间.地点和研究单元的相互组合存在多种变化, ...
- 使用iframe的好处与坏处详细比拼
一.使用iframe的坏处 1.搜索引擎的蜘蛛不会识别在iframe中被调用的图片.文本.url等内容的,因为该内容不属于该页面,只是访问的时候被临时的调用,而且在SEO建议中也有提到:"f ...
- docker 创建实例
docker创建mysql实例要注意表名大小写和端口号映射的问题.下面是使用文件挂载解决表名大小写问题. docker run --name mysql-1 -e MYSQL_ROOT_PASSWOR ...
- t-检验
https://wenku.baidu.com/view/3954f9d9a58da0116c17497b.html介绍的挺好的,可以查看~ 应用方面:用于推断差异发生的概率,与f检验,卡方检验并列 ...
- 2015-09-14-C++基础
声明与定义 声音与定义的区别在于,声明没有给变量分配空间,而定义则给变量分配了空间:定义也是声明. extern int i; // 声明但未定义 int i ; //声明且定义 extern dou ...
- unittest(12)- 学习读取配置文件
1.配置文件格式 2.读取配置文件 import configparser """ 通过读取配置文件,来执行相应的测试用例 配置文件分为2个部分 第一部分:[SECTIO ...