‘NoneType‘ object has no attribute ‘find_all‘问题解决

本文讲述了在Python爬虫学习中遇到的'NoneType'对象没有'find_all'属性的问题,原因在于服务器反爬机制导致的解析失败。通过设置headers来模拟浏览器访问,成功解决了爬取时的权限问题。同时,介绍了如何利用XPath快速定位元素。

问题描述:

Python爬虫学习过程中遇到的AttributeError: ‘NoneType’ object has no attribute ‘find_all’ 问题解决

Traceback (most recent call last):
  File "D:\Study\Python\爬虫\03数据解析\爬取小说top.py", line 29, in <module>
    parse_infos = parse_soup.find('div',class_='rankpage_box').find_all('div',class_='rank_d_list borderB_c_dsh clearfix')
AttributeError: 'NoneType' object has no attribute 'find_all'

原因分析:

‘NoneType’ object has no attribute ‘find_all’,这个错误提示告诉我们 ‘children’ 属性的对象 soup 是一个空类型,那就意味着

parse_infos=parse_soup.find('div',class_='rankpage_box').find_all('div',class_='rank_d_list borderB_c_dsh clearfix')
中parse_soup并没有得到解析出来的html页面


解决方案:

在查找资料之后发现设置headers可以避免这种情况的产生

在请求网页爬取的时候,在检查语句正确之后,结果输出错误,这就是后台服务器禁止爬取,需要通过反爬机制去解决这个问题。

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

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

# 另外无意中发现了一个可以快捷获得xpath的方法
# 在浏览器里面,F12 找到需要查询的标签,然后鼠标右击找到复制,复制里面有一个xpath完整路径和xpath路径
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越狱兔崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值