1.首先看最后的爬取结果


还有电影的信息,我保存的是csv文件。可以学到爬虫的相关知识和数据保存的信息。


删除信息,直接上代码。

红色圆点旁边的是清空。(如上图所示)
下面请求中的第一个或者前几个(如下图所示top250)找到:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36


打印出来的源代码和 网页的源代码 (查看网页源代码)进行对比,是一样的。
获取源代码(如下图所示)

#抓住User-Agent这个数据,几乎不会受到什么限制
import requests
from lxml import etreedef get_html(url):
#打开开发者工具,按F12,打开network,然后清空(clear),刷新
#从下面的请求中找到第一个
#下面的代码,加上了单引号,注意查看headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}try:html = requests.get(url,headers = headers)html.encoding = html.apparent_encoding#声明一下他的编码方式if html.status_code == 200:print("成功过获取源代码")#print(html.text)#获取之后就把他注释点,然后我们就开始解析except Exception as e:#否则把异常给输出print('获取源代码失败:%s'%e)return html.textif __name__ == '__main__':url = 'https://movie.douban.com/top250'#豆瓣的反扒机制不是很强,基本上没有反扒html = get_html(url)#获取网页源代码

获取完源代码之后我们就开始解析

可以看出来一共10页,每一页25个电影(上图所示)
右侧的li标签是25个(上图所示)
这个代码是渲染之后的代码。可能跟原来的源代码不一样

  lis = html.xpath("//ol[@class = 'grid_view']/li")


查看一下区别,就能发现与下面提到的类似区别
如果是25那么就是对的

#抓住User-Agent这个数据,几乎不会受到什么限制
import requests
from lxml import etreedef get_html(url):
#打开开发者工具,按F12,打开network,然后清空(clear),刷新
#从下面的请求中找到第一个
#下面的代码,加上了单引号,注意查看headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}try:html = requests.get(url,headers = headers)html.encoding = html.apparent_encoding#声明一下他的编码方式if html.status_code == 200:print("成功过获取源代码")#print(html.text)#获取之后就把他注释点,然后我们就开始解析except Exception as e:#否则把异常给输出print('获取源代码失败:%s'%e)return html.textdef parse_html(html):html = etree.HTML(html)lis = html.xpath("//ol[@class = 'grid_view']/li")#打印他的长度print(len(lis))#r如果是25那么就是对的if __name__ == '__main__':url = 'https://movie.douban.com/top250'#豆瓣的反扒机制不是很强,基本上没有反扒html = get_html(url)#获取网页源代码movies = parse_html(html)



右上角有一个箭头,我们可以选择一下。

名字是在span标签里。
看一下区别(如下图所示).其中.//代表当前文件下

因为是列表,咋们把他的元素取出来。

以上电影的名字,咋们就抓出来了。


选取之后,按右键【检查】,就会出现对应的代码区域。(如下图所示)


中间有好多空格和换行,咋们把他给去掉一下

 director_actor = li.xpath(".//div[@class = 'bd']/p/text()")[0].strip()    #添加strip()去掉空格


接下来咋们再抓一下他的信息information

1.可以看出匹配到第一个信息,也可以看到匹配第二个信息。然后可以看出信息已经抓下来了。如下图

接下来我们可以抓一下评分


评分已经出来了,如上如所示。
然后抓一下评分的人数。评分人数也抓取下来了,如下图所示



已经成功的抓取下来,我们希望保存到本地

上面的图片可以看出已经变成了列表形式,就是类似exal那种形式。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.csv没有指定编码,导致csv文件中文乱码…
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


会发现每一页都是25的倍数

import requests
from lxml import etree
import pandas as pd
import osMOVIES = []
IMGURLS = []def get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}try:html = requests.get(url,headers = headers)html.encoding = html.apparent_encodingif html.status_code == 200:print('成功获取源代码')# print(html.text)except Exception as e:print('获取源代码失败:%s' % e)return html.textdef parse_html(html):movies = []imgurls = []html = etree.HTML(html)lis = html.xpath("//ol[@class = 'grid_view']/li")for li in lis:name = li.xpath(".//a/span[@class='title'][1]/text()")[0]director_actor = "".join(li.xpath(".//div[@class='bd']/p/text()[1]")[0].replace(' ','').replace('\n','').replace('/','').split())info = "".join(li.xpath(".//div[@class='bd']/p/text()[2]")[0].replace(' ','').replace('\n','').split())rating_score = li.xpath(".//span[@class='rating_num']/text()")[0]rating_num = li.xpath(".//div[@class='star']/span[4]/text()")[0]introduce = li.xpath(".//p[@class='quote']/span/text()")if introduce:movie = {'name': name, 'director_actor': director_actor, 'info': info, 'rating_score': rating_score,'rating_num': rating_num, 'introduce': introduce[0]}else:movie = {'name': name, 'director_actor': director_actor, 'info': info, 'rating_score': rating_score,'rating_num': rating_num, 'introduce': None}imgurl = li.xpath(".//img/@src")[0]movies.append(movie)imgurls.append(imgurl)return movies,imgurlsdef download_img(url,movie):if 'movieposter' in os.listdir(r'E:\爬虫练习\豆瓣电影'):passelse:os.mkdir('movieposter')os.chdir(r'E:\爬虫练习\豆瓣电影\movieposter')img = requests.get(url).contentwith open(movie['name'] + '.jpg','wb') as f:print('正在下载 : %s' % url)f.write(img)if __name__ == '__main__':for i in range(10):url = 'https://movie.douban.com/top250?start=' + str(i * 25) + '&filter='html = get_html(url)movies = parse_html(html)[0]imgurls = parse_html(html)[1]MOVIES.extend(movies)IMGURLS.extend(imgurls)for i in range(250):download_img(IMGURLS[i],MOVIES[i])os.chdir(r'E:\爬虫练习\豆瓣电影')moviedata = pd.DataFrame(MOVIES)moviedata.to_csv('movie.csv')print('电影信息成功保存到本地')""""
2019年8月25日18:35
内容:抓取豆瓣电影top250影单
成果:学习了如何去除抓取下来的字符串含有特殊字符的处理方法解决了xpath学习以来遗留的历史问题li.xpath(".//a/span[@class='title'][1]/text()")[0]  一定不能忘记前面的.,代表从当前分支开始,不加的话只匹配一个
"""

第一期:【python爬虫】豆瓣电影top250相关推荐

  1. Python爬虫豆瓣电影top250

      我的另一篇博客,Python爬虫豆瓣读书评分9分以上榜单   有了上次的基础,这次简单爬了下豆瓣上电影TOP250,链接豆瓣电影TOP250.   打开链接,查看网页源代码,查找我们需要的信息的字 ...

  2. python爬虫-豆瓣电影Top250

    豆瓣电影Top250 一.准备环境 idea+python插件/python 一.需求分析 1. 运用代码获取豆瓣电影Top250里面电影的相关信息: 影片详情链接: 影片名称: 影片图片链接: 影片 ...

  3. python 豆瓣电影top250_[python爬虫]豆瓣电影Top250简单数据分析绘图

    一:简介 通过抓取豆瓣电影Top250的数据,分别进行了三个数据统计,分别是:上榜的电影上映的年份,该年份总共上榜的电影数量,数量为0的就没有统计了:各个国家地区出品的电影数量:250部电影的各个类型 ...

  4. Python爬虫实战,pyecharts模块,Python实现豆瓣电影TOP250数据可视化

    前言 利用Python实现豆瓣电影TOP250数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pandas模块 pyecharts模块: 以及一些 ...

  5. 爬虫——豆瓣电影top250

    爬虫--豆瓣电影top250 无论是动态网页爬虫和静态网页爬虫,实现的思路基 本上都是获取页面 html.页面解析.数据保存或输出.虽然获取页面 html 以及数据保存都 已经封装为通用函数,但依然编 ...

  6. python pandas 豆瓣电影 top250 数据分析

    python pandas 豆瓣电影 top250 数据分析 豆瓣电影top250数据分析 数据来源(豆瓣电影top250) 爬虫代码比较简单 数据较为真实,可以进行初步的数据分析 可以将前面的几篇文 ...

  7. python爬虫—豆瓣电影海报(按类别)

    原文地址:http://www.alannah.cn/2019/04/06/getdouban/ python爬虫-豆瓣电影海报 目标:通过python爬虫在豆瓣电影上按类别对电影海报等数据进行抓取, ...

  8. 牛刀小试:利用Python分析豆瓣电影Top250(一)

    使用Scrapy框架抓取豆瓣电影TOP250信息(https://movie.douban.com/top250). 获取影片信息后对数据进行清洗,手动填补遗漏的电影信息等. 整理完毕后具体信息如下 ...

  9. python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版

    在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...

  10. python爬虫 豆瓣电影

    最近学习python 顺便写下爬虫练手 爬的是豆瓣电影排行榜 http://movie.douban.com/chart python版本2.7.6 // 安装 Beautiful Soup sudo ...

最新文章

  1. Jupyter Magic - Timing(%%time %time %timeit)
  2. 数据预处理代码分享——机器学习与数据挖掘
  3. java进城杀不死怎么办_linux – 如何杀死永不死的进程?
  4. BFD (双向转发检测) 协议简介与开发
  5. APM - Javassist 入门 生成一个简单类
  6. Type对象获得泛型类型的两个扩展方法
  7. 在进行文字自绘时,自动换行打印
  8. PHP导入Excel和导出Excel
  9. Spring 配置解析之Properties
  10. 计算机原理课程设计陈宏,东北大学计算机组成基础原理课程教学设计.doc
  11. 解决import tensorflow时的报错 Passing (type, 1) or ‘1type‘ as a synonym of type is deprecate
  12. http://syy7.com/a/33.php,CVE-2020-7062
  13. class括号里的object_JVM真香系列:轻松理解class文件到虚拟机(上)
  14. 成功不自律仍是一场空
  15. onLayout与onMeasure
  16. linux Flatpak 安装包,snap卸载
  17. PyCharm安装LabelImg
  18. 相关系数(Correlation)
  19. 什么是Tableau(BI工具)
  20. 计算机无法继续安装程序,解决方法:如果计算机继续无法安装图形驱动程序,该怎么办...

热门文章

  1. JavaWeb解决form表单刷新提示确认重新提交表单
  2. 三边形面积(海伦公式及拓展)
  3. 用matplotlib库将形状为(4418,3,150,27,1)的数据进行可视化
  4. 润乾——润乾报表错误
  5. QCC304x/QCC514x Pydbg在线调试
  6. Java泛型入参的三种通配符使用
  7. CP56time2a时标格式说明
  8. 服务器网卡网速慢怎么维护,网速慢怎么办我通过某单位内部的局域网上互联网,最近一段时间网速巨 爱问知识人...
  9. 红警战网地图下载 红警地图库下载 红警战网客户端地图库地图下载
  10. JavaWeb——Spring 的操作数据库的 DAO模式