因为要学习数据分析,需要从网上爬取数据,所以开始学习爬虫,使用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(经典案例)的更多相关文章

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

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

  2. <爬虫实战>豆瓣电影TOP250(三种解析方法)

    1.豆瓣电影排行.py # 目标:爬取豆瓣电影排行榜TOP250的电影信息 # 信息包括:电影名字,上映时间,主演,评分,导演,一句话评价 # 解析用学过的几种方法都实验一下①正则表达式.②Beaut ...

  3. 爬虫_豆瓣电影top250 (正则表达式)

    一样的套路,就是多线程还没弄 import requests import re import json headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) ...

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

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

  5. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

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

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

  7. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  8. 练习:一只豆瓣电影TOP250的爬虫

    练习:一只豆瓣电影TOP250爬虫 练习:一只豆瓣电影TOP250爬虫 ①创建project ②编辑items.py import scrapyclass DoubanmovieItem(scrapy ...

  9. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...

随机推荐

  1. 如何修改tomcat名称

    修改tomcat名称为  Tomcat-jx-1

  2. 次小生成树题(k) poj1679The Unique MST

    http://poj.org/problem?id=1679 #include<iostream> #include<vector> #include<cstdio> ...

  3. KUKA机器人常见十大问题及解决方法

    1 开机坐标系无效 世界坐标系是以枪头为基点,在这种坐标系中,机器人所有的动作都是按照以枪头为顶点来完成移动,XYZ方向切割枪方向不改变,如果机器人在世界坐标系中移动,枪头也随着改变方向,那就是我们在 ...

  4. dbSNP|n SwissVar|n CanProVar|CHPP|mutation assessor|

    癌症蛋白质基因组学主要研究driver性质的突变,该突变有可能是转化为癌基因的突变.抑癌基因突变.药物位点突变和蛋白突变,可以使用mutation assessor 预测突变 突变导致疾病,修饰仅影响 ...

  5. python2下经典爬虫(第一卷)

    python2.7的爬虫个人认为比较经典在此我将会用书中的网站http://example.webscraping.com作为案例 爬虫第一步:进行背景调研 了解网站的结构资源在网站的robots.t ...

  6. 吴裕雄--天生自然HTML学习笔记:HTML 布局

    网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head>  <meta charset=&qu ...

  7. drf三大认证

    源码分析 """ 1)APIView的dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial( ...

  8. 来自ebay内部的「软件测试」学习资料,覆盖GUI、API自动化、代码级测试及性能测试等,Python等,拿走不谢!...

    在软件测试领域从业蛮久了,常有人会问我: 刚入测试一年,很迷茫,觉得没啥好做的-- 测试在公司真的不受重视,我是不是去转型做开发会更好?  资深的测试架构师的发展路径是怎么样的?我平时该怎么学习? 我 ...

  9. PHP 全局使用 Laravel 辅助函数 dd

    dump() 方法 全局 composer.json 12345 "require": { "squizlabs/php_codesniffer": " ...

  10. android activity 启动过程分析(source code 4.4)

    说实话,android source code从2.3到4.4变化是蛮多的,尤其是media部分,虽然总的框架是没有多大变化,但是找起代码来看还是挺麻烦的.在android里面最受伤的是使用了java ...