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路径