极客时间Python核心技术与实战

案例:豆瓣今日推荐电影爬虫

老师提供的原代码如下(执行时间,我是在pycharm中执行的,所以我稍加修改了一下,记得需要 pip install bs4):

import requests
from bs4 import BeautifulSoup
import timedef main():url = 'https://movie.douban.com/cinema/later/beijing/'init_page = requests.get(url).contentinit_soup = BeautifulSoup(init_page, 'lxml')all_movies = init_soup.find('div', id='showing-soon')for each_movie in all_movies.find_all('div', class_='item'):all_a_tag = each_movie.find_all('a')all_li_tag = each_movie.find_all('li')movie_name = all_a_tag[1].texturl_to_fetch = all_a_tag[1]['href']movie_date = all_li_tag[0].textresponse_item = requests.get(url_to_fetch).contentsoup_item = BeautifulSoup(response_item, 'lxml')img_tag = soup_item.find('img')print('{} {} {}'.format(movie_name, movie_date, img_tag['src']))if __name__ == '__main__':start = time.time()main()print('cost: {:.2f}s.'.format(time.time() - start))

执行该代码时报错为:

AttributeError: ‘NoneType’ object has no attribute ‘find_all’

分析:看到“NoneType”可猜想大概率是豆瓣网站的服务器嵌入反爬虫机制导致我们爬取它的网页数据失败。

解决:需要模拟浏览器发送正常请求,正常的一个requests请求包含url和header,现在url有,header去它的网站获取,然后添加到请求信息中。

说明:该豆瓣网站被爬太多次,我们被该网页服务器的反爬虫程序发现了,并禁止我们爬取。因此我们需要模拟浏览器,重新给服务器发送请求,并且添加头等信息headers,headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。

方法

  • 浏览器按下F12,输入https://movie.douban.com/cinema/later/beijing/回车,进入豆瓣官网,调试页面选择“network”,点击第一个“beijing”,右边选择“header”,往下拉找到“User-Agent”,复制
  • 最好在本地编辑一下,复制到Sublime里,给冒号前后的信息分别加上引号
  • 然后将该信息写入代码中
# 编写header信息
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"}# 将header添加到requests请求中,代码中有两处使用
init_page = requests.get(url, headers=header).content
response_item = requests.get(url_to_fetch, headers=header).content

其他代码不变,这样就添加完成了。

最后执行结果为:

西游记之再世妖王 08月07日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2673991933.jpg
深爱 08月13日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2663099539.jpg
五个扑水的少年 08月13日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2673700631.jpg
皮皮虾总裁 08月13日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2544788692.jpg
皮皮鲁与鲁西西之罐头小人 08月13日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2668941343.jpg
忠犬流浪记 08月20日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2567862389.jpg
测谎人 08月20日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2674123936.jpg
独家头条:初露锋芒 08月20日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2675277070.jpg
兔子暴力 08月27日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2674957566.jpg
垛上花 08月27日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2673839013.jpg
探探猫人鱼公主 08月28日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2634896515.jpg
野马分鬃 09月03日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2673678150.jpg
1950他们正年轻 09月03日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2673807422.jpg
妈妈的神奇小子 09月04日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2674121504.jpg
爱的富硒泉 09月17日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2663611662.jpg
我的青春有个你 09月19日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2652126215.jpg
山海经之小人国 09月19日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2669123766.jpg
关于我妈的一切 09月19日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2675130420.jpg
日常幻想指南 09月19日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2669962500.jpg
狗果定理 09月19日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2641086760.jpg
摇滚藏獒:蓝色光芒 09月19日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2654487598.jpg
cost: 33.64s.

解决方案来自https://blog.csdn.net/weixin_44052055/article/details/108632006。感谢!

AttributeError: ‘NoneType‘ object has no attribute ‘find_all‘相关推荐

  1. python爬虫数据寻找过程(解决爬虫异步导致AttributeError: 'NoneType' object has no attribute 'find_all'错误)

    前边写了url的分析 我们爬取想要的数据,一般是打开网站链接,用浏览器的elements功能对网页标签进行数据分析,确定想要的数据的位置,再在代码中通过requests库的get和post方式发起请求 ...

  2. 解决python爬虫AttributeError: ‘NoneType‘ object has no attribute ‘find_all‘

    网页上异地加密数据的python爬虫 这里特别感谢钟思哲大佬帮我找到了问题并帮助解决 要搞python大作业 想从https://www.endata.com.cn/BoxOffice/BO/Year ...

  3. python爬虫遇到 ‘NoneType‘ object has no attribute ‘find_all‘ 问题

    练习爬虫项目时,遇到问题 在跟着别人练习爬虫项目时,遇到了'NoneType' object has no attribute 'find_all' 问题,具体报错如下 import requests ...

  4. [报错]深析AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘(持更)

    有相关的博客还要写它的原因在于下面的博客讲了各自的重点.因此,我将深入刨析原因,以及导致该原因出现的几种问题!如果讲解清楚了,请点个赞哦☀️ 参考博文: <AttributeError: 'No ...

  5. Traceback (most recent call last): File AttributeError: 'NoneType' object has no attribute 'group'

    Traceback (most recent call last):File "<stdin>", line 1, in <module> Attribut ...

  6. Keras问题“AttributeError: 'NoneType' object has no attribute 'update”解决

    BUG 在使用Keras训练模型时,在每个epoch完成后save_model时会报错 "AttributeError: 'NoneType' object has no attribute ...

  7. pyspark AttributeError: 'NoneType' object has no attribute 'setCallSite'

    pyspark: AttributeError: 'NoneType' object has no attribute 'setCallSite' 我草,是pyspark的bug.解决方法: prin ...

  8. Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法

    AttributeError: 'NoneType' object has no attribute 'backend'. 错误原因: 选择的应用后端类型不对. windows 上应用的后端类型有两种 ...

  9. 成功解决AttributeError: ‘NoneType‘ object has no attribute ‘shape‘

    成功解决AttributeError: 'NoneType' object has no attribute 'shape' 目录 解决问题 解决思路 解决方法 解决问题 multiplier = [ ...

最新文章

  1. Windows Phone7天初学(4):数据绑定
  2. 打算尝试瑜伽,看是否能解决长期困扰的胃痛问题
  3. 关于ubuntu 14.04 dpkg 问题
  4. 完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分
  5. java空值转datetime,解决Java (Spring boot) 读取数据库字段,datetime 格式为null,抛出异常 Zero date value prohibited...
  6. python3、sqlmap下载与安装教程
  7. 将已有项目转为se项目_威海将再添国家级非遗项目
  8. python数据存储系列教程——python对象与json字符串的相互转化,json文件的存储与读取
  9. EL表达式判断条件要写在${}内
  10. no such file to load -- bundler/setup
  11. Alibaba Fastjson 入门详细教程
  12. JDBC第三篇--【事务、元数据、改造JDBC工具类】
  13. python multiprocess queue_Python:Multiprocessing Queue.put不适用于半大数...
  14. mysql数据库引擎问题
  15. 【免费好用】节假日查询接口
  16. python sqrt(4)*sqrt(9),Python sqrt() 函数
  17. 台式计算机VGA线可以拔掉吗,电脑开机花屏拔掉vga线在插入又会清晰
  18. bzoj 1467 exBSGS
  19. adb连接手机工具_adb命令——连接手机
  20. MySQL查看数据库数据量

热门文章

  1. 千寻位置 开发demo_「千寻新姿势」如何接入千寻位置高精度位置服务
  2. 某校2020专硕编程题-递归逆序输出
  3. 基于FFmpeg 实现RTSP, 音视频编解码,视频流添加文字,音视频合成MP4
  4. 济南大学计算机复试题目,2021济南大学考研历年真题
  5. 知识库的分类梳理原则与实践经验
  6. 如有回忆,我情愿和你化作一团火焰!
  7. 专科论文查重率要求多少?
  8. BZOJ 1787 [Ahoi2008]Meet紧急集合 题解与分析
  9. 纯原创最全Redis面试题整理
  10. python 爬取加密视频_使用Python抓取m3u8加密视频 续:获得index.m3u8 地址