第一步:分析问题,明确结果

问题需求就是把豆瓣TOP250里面的 序号/电影名/评分/推荐语/链接 都爬取下来,结果就是全部展示打印出来

第二步:思考要用到的知识

要爬取“序号/电影名/评分/推荐语/链接”这些信息,我们已经学习了用requests.get()获取数据,BeautifulSoup库解析数据,find()和find_all()提取数据,还有呢,观察下,一共10页,我们还要加个for循环对吧~

第三步:书写思路一代码

先爬取最小共同父级标签 <li 然后针对每一个父级标签,提取里面的序号/电影名/评分/推荐语/链接

import requests, random, bs4for x in range(10):url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='res = requests.get(url)bs = bs4.BeautifulSoup(res.text, 'html.parser')bs = bs.find('ol', class_="grid_view")for titles in bs.find_all('li'):num = titles.find('em',class_="").text#查找序号title = titles.find('span', class_="title").text#查找电影名tes = titles.find('span',class_="inq").text#查找推荐语comment = titles.find('span',class_="rating_num").text#查找评分url_movie = titles.find('a')['href']print(num + '.' + title + '——' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie)

第四步:书写思路二代码

分别提取所有的序号/所有的电影名/所有的评分/所有的推荐语/所有的链接,然后再按顺序一一对应起来。

参考代码(一)

import requests, random, bs4for x in range(10):url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'}res = requests.get(url,headers=headers)soup = bs4.BeautifulSoup(res.text, 'html.parser')bs = soup.find('ol', class_="grid_view")for titles in bs.find_all('li'):num = titles.find('em',class_="").text#查找序号title = titles.find('span', class_="title").text#查找电影名tes = titles.find('span',class_="inq").text#查找推荐语comment = titles.find('span',class_="rating_num").text#查找评分url_movie = titles.find('a')['href']if titles.find('span',class_="inq") != None:tes = titles.find('span',class_="inq").textprint(num + '.' + title + '——' + '评分'+comment + '\n' + '推荐语:' + tes +'\n' + url_movie)else:print(num + '.' + title + '——' + comment + '\n' +'\n' + url_movie)

参考代码(二)

import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'}for i in range(1,11):#因为一页只有25个电影简介,所以需要10页href='https://movie.douban.com/top250?start='+str((i-1)*25)+'&filter='res=requests.get(href,headers=headers)#头等信息html=res.textsoup=BeautifulSoup(html,'html.parser') #解析网页代码#需要爬取 序号,电影名,评分,推荐语,链接movies=soup.find('ol',class_='grid_view').find_all('li')for movie in movies:movie_num=movie.find('div',class_='pic').find('em') #电影序号movie_name=movie.find('div',class_='info').find('span',class_='title') #电影名称movie_star=movie.find('div',class_='star').find('span',class_='rating_num') #电影评分movie_recommend=movie.find('p',class_='quote') #电影推荐语movie_href=movie.find('div',class_='pic').find('a')#电影链接 movie_href['href']if all([movie_name,movie_href,movie_num,movie_star,movie_recommend]):#表示都不为空print('排行第'+movie_num.text+'的电影:'+'\n')print('电影名:'+movie_name.text.strip()+'\t'+'评分:'+movie_star.text)print('推荐语:'+movie_recommend.text+'\n')print('链接:'+movie_href['href'])print('\n'+'******************************'+'\n')else:pass

注意
运行终端报AttributeError: ‘NoneType’ object has no attribute 'find_all’错误,意味着我们被该网页服务器的反爬虫程序发现了,并禁止我们爬取,所以下一步就是需要我们模拟浏览器,重新给服务器发送请求,并且添加头等信息headers,headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 。

如何添加headers信息,可以参考这个链接

爬虫第3课 -豆瓣TOP250电影爬取相关推荐

  1. python爬虫教材推荐 豆瓣_Python爬虫入门教程:豆瓣Top电影爬取

    基本开发环境Python 3.6 Pycharm 相关模块的使用requests parsel csv 安装Python并添加到环境变量,pip安装需要的相关模块即可. 爬虫基本思路 一.明确需求 爬 ...

  2. 爬虫——豆瓣top250电影爬取实验

    1.获取头部 我们首先需要去到目标网址豆瓣top250上,点开'检查'选项,获取头部信息,具体见下图: 我们赋值user-agent和host的信息,这是一个爬虫隐身的最好方法. 于是有以下代码: h ...

  3. python爬虫多线程下载_Python爬虫之多线程下载豆瓣Top250电影图片

    爬虫项目介绍 本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示: 本次爬虫项目将分别不使用多线程和使用多线程 ...

  4. python 网络爬虫 1.2 获取豆瓣TOP250电影的中英文名、港台名、导演、上映年份、电影分类以及评分,将数据存入文档。

    题目: 获取豆瓣TOP250电影的中英文名.港台名.导演.上映年份.电影分类以及评分,将数据存入文档. 代码: import codecs import csv import refrom reque ...

  5. qt爬取网页信息_豆瓣TOP250数据爬取

    一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...

  6. 豆瓣top250图书爬取

    爬取网站为:豆瓣链接 from bs4 import BeautifulSoup import requests from openpyxl import Workbook excel_name = ...

  7. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  8. scrapy mysql 豆瓣_Python爬虫之Scrapy+Mysql+Mongodb爬豆瓣top250电影

    学习python时,爬虫是一种简单上手的方式,应该也是一个必经阶段.本项目用Scrapy框架实现了抓取豆瓣top250电影,并将图片及其它信息保存下来.爬取豆瓣top250电影不需要登录.没有JS解析 ...

  9. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

  10. python爬虫爬取豆瓣top250电影影评

    信息系统课程项目,小组准备做一个电影推荐系统,自己选了觉得很有趣的资源模块,需要获取电影的评价资源等信息.花了大约一周看Web Scraping with Python这本书,对爬虫有了大体但是初略的 ...

最新文章

  1. java urlconn 下载慢_使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法...
  2. OSI七层模型非专业简介
  3. hdu1006 Tick and TIck
  4. 反射 getDeclaredMethod和getMethod的区别以及用法《实例》
  5. ECCV2018 论文简析 Oral_1 持续更新
  6. 【SQL*PLUS】Copy Command
  7. Java 8 Lambda表达式基础语法
  8. Linux基础 -- vim编辑器3 -- 查找和替换
  9. css 倒三角_【推荐收藏】10 个最佳实践来改良你的 CSS
  10. Anaconda 下各种第三方库的安装
  11. 第11章 连接查询和分组查询
  12. ArcGIS API For JS实现动态点扩散
  13. 【RLchina第四讲】Model-Based Reinforcement Learning
  14. spring-第十五篇之AOP面向切面编程之AspectJ框架简单应用
  15. 查看mysql默认端口号和修改端口号
  16. python 求矩阵的特征值和特征向量
  17. 文本表达:解决BERT中的各向异性方法总结
  18. ansys apdl变量基本操作
  19. Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (交互题,二分)
  20. 什么是同比、环比与定基比

热门文章

  1. 随机密聊 匿名聊天室程序源码
  2. 自己的服务器进不去显示403,HTTP 403错误:含义和解决方法
  3. 东子破解的java设计模式状态模式
  4. 【随笔】Linux主机简单判断CC攻击的命令
  5. 四、音频如何从USB输入输出
  6. 在excel中使用宏和公式把汉字转换成拼音
  7. 快速云:IDC、EDC、ODC、DC分别指什么机房?
  8. 蒸烤一体机哪个品牌好性价比高,盘点国内消费者呼声最高的品牌推荐
  9. 电脑怎么设置开机密码?简单几步给你的电脑“上锁”
  10. 拯救红米note3砖头