网络爬虫常见问题汇总


网络爬虫常见问题汇总

问题一:使用requests库或者urllib库获取源代码时无法正常显示中文

解决方法:

(1)requests库的文本中有两种类型,一种是文本类型,使用text属性,一种是针对音频、视频、图片等二进制数据类型,使用content属性;一般返回的是text属性时会出现中文乱码现象,因此在输出返回之前需要显示的修改属性encoding,将其赋值为“utf-8”或者是apparent_encoding即可。

(2)urllib库的文本只有一种就是使用read()方法进行读取。因此要解决中文问题,一定要在读取后加入.decode(“utf-8”),进行显示的转码之后便不会出现乱码问题了。

问题二:文本节点

首先看两个HTML代码:

这是你眼中的HTML代码
在这里插入图片描述
这是计算机眼中的HTML代码:
在这里插入图片描述
解决方法:

在BS4中, 我们在HTML中看到的换行符以及空格都是NavigableString 也就是文本节点.

问题三:滥用遍历文档树的方法

常见的方法有:

contents
descendants
parent
next_sibling
next_element

这些方法都会遍历文档树中的所有节点, 包括文本节点. 也就是说: 只要你使用这些方法, 你就一定会选择出许多文本节点, 因为文本节点无处不在: 换行, 空格等.

解决方法:

使用过滤器find等方法:

soup.find(name=’tagname’)
当我们一旦在过滤器中指定了name关键字, 那么返回的结果就一定是tag对象, 因为文档节点没有name属性.

结论: 大多数情况下, 你需要的是find 这一类过滤器, 而不是遍历所有节点.

问题四:html.parser

html.parser是个令人又恨又爱的解析器, 它是Python内置的解析器, 开箱即用. 但是在一些情况下, 它解析出来的文档会丢失信息.

解决方法:

如果你发现你的文档信息缺少了, 那么试着换其他解析器,例如: lxml


文章作者: michaelming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 michaelming !
 上一篇
网络爬虫——前程无忧网数据获取及存储(高级) 网络爬虫——前程无忧网数据获取及存储(高级)
网络爬虫——前程无忧网数据获取及存储(高级)实验内容1目标网站:前程无忧招聘网 目标网址:https://search.51job.com/list/120000,000000,0000,00,9,99,Python,2,1.html 目标
2019-09-03
下一篇 
网络爬虫——二手房数据抓取及MYSQL存储 网络爬虫——二手房数据抓取及MYSQL存储
网络爬虫——二手房数据抓取及MYSQL存储目标网址:https://qd.anjuke.com/sale/jiaozhoushi/?from=SearchBar 目标数据: 标题 + 链接地址 + 厅室+ 面积+ 层数+建造时间 + 地址
2019-05-27
  目录