网页爬虫中\xa0、\u3000等字符的解释及去除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网页爬虫中\xa0、\u3000等字符的解释及去除相关的知识,希望对你有一定的参考价值。

参考技术A \xa0 表示不间断空白符,爬虫中遇到它的概率不可谓不小,而经常和它一同出现的还有 \u3000 、 \u2800 、 \t 等Unicode字符串。单从对 \xa0 、 \t 、 \u3000 等含空白字符的处理来说,有以下几种方法可行:

使用正则表达式可以轻松匹配所有空白字符,它对于Unicode字符也是有效的,比如:

不过该正则表达式会对所有字符都进行统一处理,可能会与原页面展示效果有所出入。

str 对象的 translate 方法也是去除这些字符串的好帮手,该方法具体用法可参考Python标准库,本处使用示例如下:

将字符串分割再重组,这时候空白字符就会被pass掉了,不过该方法杀伤力太大,会导致所有空白消失,一定要慎用。
使用示例:

Python标准库的 unicodedata 模块提供了 normalize 方法将Unicode字符转换为正常字符,该方法可算是处理这类情况最好的方法了,它会让字符回归到我们期望看到的样子,同时不损害其它正常的空白字符,而且还能还原其它非空白字符。 normalize 第一个参数指定字符串标准化的方式。 NFC 表示字符应该是整体组成(比如可能的话就使用单一编码),而 NFD 表示字符应该分解为多个组合字符表示。 Python 同样支持扩展的标准化形式 NFKC 和 NFKD ,它们在处理某些字符的时候增加了额外的兼容特性。使用该方法处理 \xa0 等字符的示例如下:

如何用Python爬虫抓取网页内容?

比如新浪,QQ等

爬虫流程
其实把网络爬虫抽象开来看,它无外乎包含如下几个步骤
模拟请求网页。模拟浏览器,打开目标网站。
获取数据。打开网站之后,就可以自动化的获取我们所需要的网站数据。
保存数据。拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。
那么我们该如何使用 Python 来编写自己的爬虫程序呢,在这里我要重点介绍一个 Python 库:Requests。
Requests 使用
Requests 库是 Python 中发起 HTTP 请求的库,使用非常方便简单。
模拟发送 HTTP 请求
发送 GET 请求
当我们用浏览器打开豆瓣首页时,其实发送的最原始的请求就是 GET 请求
import requests
res = requests.get('http://www.douban.com')
print(res)
print(type(res))
>>>
<Response [200]>
<class 'requests.models.Response'>
参考技术A

首先,你要安装requests和BeautifulSoup4,然后执行如下代码.

import requests
from bs4 import BeautifulSoup

iurl = 'http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'

res = requests.get(iurl)

res.encoding = 'utf-8'

#print(len(res.text))

soup = BeautifulSoup(res.text,'html.parser')

#标题
H1 = soup.select('#artibodyTitle')[0].text

#来源
time_source = soup.select('.time-source')[0].text


#来源
origin = soup.select('#artibody p')[0].text.strip()

#原标题
oriTitle = soup.select('#artibody p')[1].text.strip()

#内容
raw_content = soup.select('#artibody p')[2:19]
content = []
for paragraph in raw_content:
    content.append(paragraph.text.strip())
'@'.join(content)    
#责任编辑
ae = soup.select('.article-editor')[0].text

这样就可以了

本回答被提问者采纳

以上是关于网页爬虫中\xa0、\u3000等字符的解释及去除的主要内容,如果未能解决你的问题,请参考以下文章

AJAX 怎么获取JSON中的指定数据

el-upload动态绑定file-list,多个上传时只返回一次成功回调

微信小程序空格符怎么写

python 中 bytes 中的乱码怎么转成中文字符

如何把 \u8BF7\u9009\u62E9 这样的字符串转为汉字 网页特效代码演示

html中不会被渲染的标签