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

Python爬虫

问题描述:

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路径
上一篇:基本库urllib的使用(超详解!)


下一篇:js中将字符串转换成json的三种方式