问题1:获取网站的中文显示乱码
爬取w3school的标题:
import requests
from bs4 import BeautifulSoup
url = 'http://w3school.com.cn/'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
xx = soup.find('div', id='d1').h2.text
print(xx)
乱码了,看一下网页的编码方式:
可以看出网站代码使用的是 gbk 编码,因此,加上r.encoding = 'gbk'
就可以解决了。
问题2:网页使用 gzip 压缩
使用 requests 获取新浪网首页,查看源代码可以发现已经是使用 utf-8 编码了:
中文部分全部乱码,虽然已经是采用 utf-8 的编码方式了,但是新浪网使用 gzip 将网页压缩了,必须要先将其解码才行。
使用 r.content
会自动解码 gzip 和 deflate 传输编码的响应数据。
持续更新中…