python爬虫的一个问题,'NoneType' object has no attribute 'children'?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫的一个问题,'NoneType' object has no attribute 'children'?相关的知识,希望对你有一定的参考价值。

模仿北京理工大学mooc的最好大学排名的爬取方法,利用了requests,BeautifulSoup库等 ,新人求解!!

属性错误:'NoneType' 对象没有属性 'children' ,这个错误提示告诉我们 'children' 属性的对象 soup 是一个空类型,那就意味着soup = BeautifulSoup(html,'html.parser')中soup并没有得到解析出来的html页面,那就是说在调用getHTMLText(url)函数时这个函数并没有得到url链接对应的网页信息。所以错误可能出现在getHTMLText(url)函数中,追问

首先非常感谢这么晚回答我的问题!但是我运行getHTMLText(url)这个函数之后,print(soup)其实是能打印出html页面的所有信息的,但就是在getinfo(ulist,html)这个方法中 就是soup返回了none 这是为什么?还是不能明白。

参考技术A bs出来的返回值是空值。
开始排查错误
1 输出get之后的值
2 输出bs之后的值
排查下是哪里出错,
然后进行针对性的修改
参考技术B 哥们儿,你这张图看不清楚啊,想帮你但是不知道你图片中的内容,重发一下截屏吧

Python爬虫,利用scrapy来编写一个爬虫

本文将介绍我是如何在python爬虫里面一步一步踩坑,然后慢慢走出来的,期间碰到的所有问题我都会详细说明,让大家以后碰到这些问题时能够快速确定问题的来源,后面的代码只是贴出了核心代码,更详细的代码暂时没有贴出来。

流程一览

首先我是想爬某个网站上面的所有文章内容,但是由于之前没有做过爬虫(也不知道到底那个语言最方便),所以这里想到了是用python来做一个爬虫(毕竟人家的名字都带有爬虫的含义😄),我这边是打算先将所有从网站上爬下来的数据放到 ElasticSearch 里面, 选择 ElasticSearch 的原因是速度快,里面分词插件,倒排索引,需要数据的时候查询效率会非常好(毕竟爬的东西比较多😄),然后我会将所有的数据在 ElasticSearch 的老婆 kibana 里面将数据进行可视化出来,并且分析这些文章内容,可以先看一下预期可视化的效果(上图了),这个效果图是 kibana6.4 系统给予的帮助效果图(就是说你可以弄成这样,我也想弄成这样😁)。后面我会发一个dockerfile上来(现在还没弄😳)。

环境需求

Jdk (Elasticsearch需要)

ElasticSearch (用来存储数据)

Kinaba (用来操作ElasticSearch和数据可视化)

Python (编写爬虫)

Redis (数据排重)

这些东西可以去找相应的教程安装,我这里只有ElasticSearch的安装😢点我获取安装教程。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

第一步,使用python的pip来安装需要的插件(第一个坑在这儿)

tomd:将html转换成markdown

pip3 install tomd

redis:需要python的redis插件

pip3 install redis

scrapy:框架安装(坑)

首先我是像上面一样执行了

pip3 install scrapy

然后发现缺少 gcc 组件 error: command ‘gcc’ failed with exit status 1

然后我就找啊找,找啊找,最后终于找到了正确的解决方法(期间试了很多错误答案😭)。最终的解决办法就是使用 yum 来安装 python34-devel , 这个 python34-devel 根据你自己的python版本来,可能是python-devel,是多少版本就将中间的34改成你的版本, 我的是3.4.6。

yum install python34-devel

安装完成过后使用命令 scrapy 来试试吧。

第二步,使用scrapy来创建你的项目

输入命令 scrapy startproject scrapyDemo , 来创建一个爬虫项目

使用genspider来生成一个基础的spider,使用命令 scrapy genspider demo juejin.im , 后面这个网址是你要爬的网站,我们先爬自己家的😂

查看生成的目录结构

第三步,打开项目,开始编码

查看生成的的demo.py的内容

可以使用第二种方式,将start_urls给提出来

编写 parse 方法的代码

编写pipeline类,这个pipeline是一个管道,可以将所有yield关键字返回的数据都交给这个管道处理,但是需要在settings里面配置一下pipeline才行。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

第四步,运行代码查看效果

使用 scrapy list 查看本地的所有爬虫

liaochengdeMacBook-Pro:scrapyDemo liaocheng

使用 scrapy crawl demo 来运行爬虫

scrapy crawl demo

到kibana里面看爬到的数据,执行下面的命令可以看到数据

Python爬虫,利用scrapy来编写一个爬虫!

以上是关于python爬虫的一个问题,'NoneType' object has no attribute 'children'?的主要内容,如果未能解决你的问题,请参考以下文章

解决python爬虫requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题

003 Python网络爬虫与信息提取 网络爬虫的'盗亦有道'

有没有易懂的 Python 多线程爬虫代码

python 爬虫提取新闻标题?

python 爬虫求教

python爬虫 源码