解决python爬虫时遇到AttributeError: ‘NoneType‘ object has no attribute ‘find_all‘

解决python爬虫时遇到AttributeError: ‘NoneType‘ object has no attribute ‘find_all‘最近在练习学到的爬虫实例遇到 AttributeErr NoneType objecthasnoa find all 的错误 爬虫要求如下 任务描述 https movie douban com cinema later beijing 这个页面描述了北京最近上映的电影 你能否通过 Python 得到这些电影的名称 上映时间和海报呢 这个页面的海报是缩小版的 我希望你能从具体的电影描述页面中抓取到海报 在运行老师给的代码如下 importreques

最近在练习学到的爬虫实例遇到AttributeError: ‘NoneType’ object has no attribute ‘find_all’的错误。

爬虫要求如下:

任务描述:https://movie.douban.com/cinema/later/beijing/ 这个页面描述了北京最近上映的电影,你能否通过 Python 得到这些电影的名称、上映时间和海报呢?这个页面的海报是缩小版的,我希望你能从具体的电影描述页面中抓取到海报。

在运行老师给的代码如下:

import requests from bs4 import BeautifulSoup def main(): url = "https://movie.douban.com/cinema/later/beijing/" init_page = requests.get(url).content init_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].text url_to_fetch = all_a_tag[1]['href'] movie_date = all_li_tag[0].text response_item = requests.get(url_to_fetch).content soup_item = BeautifulSoup(response_item, 'lxml') img_tag = soup_item.find('img') print('{} {} {}'.format(movie_name, movie_date, img_tag['src'])) main() 

在这里插入图片描述在这里插入图片描述
发现都没有错,然后打印出现NoneType的地方:
在这里插入图片描述
结果显示:






<class 'NoneType'> 

经过查阅资料发现:出现这种问题就是,获取不到数据。原因就是该网站被爬太多次,我们被该网页服务器的反爬虫程序发现了,并禁止我们爬取。因此我们需要模拟浏览器,重新给服务器发送请求,并且添加头等信息headers,headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 。

下面大致看一下设置header的原因和用法。

为什么要设置header?

在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题。

headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。

对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 。

headers在哪里找?

谷歌或者火狐浏览器,在网页面上点击:右键–>检查–>剩余按照图中显示操作,需要按Fn+F5刷新出网页来

有的浏览器是点击:右键->查看元素,刷新

在这里插入图片描述注意:headers中有很多内容,主要常用的就是user-agent 和 host,他们是以键对的形式展现出来,如果user-agent 以字典键对形式作为headers的内容,就可以反爬成功,就不需要其他键对;否则,需要加入headers下的更多键对形式。

你可以找你的浏览器的header,我这里直接给出一个header运行

header = { 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"} init_page = requests.get(url, headers=header).content 

把header参数加入到获取信息requests里面。

解决问题后,最后爬取结果如下:

通往春天的列车 0917日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 麦路人 0917日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 死无对证 0918日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 邻里美好的一天 0918日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 萌宠流浪记 0918日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 蓝色防线 0918日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 红巴山 0918日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 世纪之缘 0922日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 菊次郎的夏天 0925日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 夺冠 0925日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 急先锋 0930日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 姜子牙 1001日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 我和我的家乡 1001日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 一点就到家 1001日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 奇妙王国之魔法奇缘 1001日 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 木兰:横空出世 1003日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 月半爱丽丝 1030日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 日不落酒店 1212日 https://img1.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 小美人鱼的奇幻冒险 1212日 https://img2.doubanio.com/view/photo/s_ratio_poster/public/p.jpg 拆弹专家2 1224日 https://img9.doubanio.com/view/photo/s_ratio_poster/public/p.jpg Process finished with exit code 0 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211752.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:41
下一篇 2026年3月18日 下午9:41


相关推荐

  • java实现国密SM4加密「建议收藏」

    java实现国密SM4加密「建议收藏」前言最近世界政治影响,我国也开始要求算法的使用,以避免来自外国的黑客入侵。我们在使用加密算法时,有必要选择使用国密算法进行加密一、国密SM4是什么? 国密即国家密码局认定的国产密码算法。 主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA ECC2.

    2022年10月5日
    6
  • 常用的Java工具,16个

    常用的Java工具,16个在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。一.org.apache.commons.io.IOUtilscloseQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:转换IO流、Uri、byte[]为Stringcopy:IO流数据复制,从输入流写到输出流中,最大支持2GB

    2022年7月7日
    31
  • 使用再生龙还原镜像文件到硬盘

    使用再生龙还原镜像文件到硬盘1 nbsp 把制作好的再生龙光盘插入需要的电脑 开机按 F4 使用再生龙启动 2 nbsp 选择默认的 Clonezailla nbsp live Default nbsp settings VGA nbsp 800 600 然后等待几分钟 nbsp 3 nbsp 选择语言 简体中文 nbsp 4 nbsp 选择不修改键盘映射 nbsp 5 nbsp 选择使用再生龙 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 6 nbsp 选择硬盘 分区 存到 来自 镜像文件 此选项既可以制作镜像 也可以恢复镜像 nbsp 7 nbsp 使用本机的分区 nbsp nbsp nbsp nbsp nbsp

    2026年3月18日
    2
  • 阿里通义千问开源全新文生图模型Qwen-Image

    阿里通义千问开源全新文生图模型Qwen-Image

    2026年3月12日
    3
  • 面向对象设计大作业——火车售票系统

    面向对象设计大作业——火车售票系统

    2021年10月6日
    67
  • 跨境亚马逊FBA系统课程,精准布局跨境电商,亚马逊跨境之旅从这里开始(更新)

    跨境亚马逊FBA系统课程,精准布局跨境电商,亚马逊跨境之旅从这里开始(更新)

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号