python3爬虫(requests+bs4)

python3:使用requests+bs4编写爬虫

requests框架

下载

1
pip install requests

查看版本

1
print(requests.__version__)

版本很重要,因为有些低版本的requests在进行https请求时无法禁用ssl验证,在请求https网站的时候会报错

更新requests

1
pip --upgrade requests

发起请求并获取结果

1
2
3
4
5
6
7
8
9
10
11
import requests

url = "http://www.baidu.com"
# 发起get请求
response = requests.get(url)
# 发起post请求
response = requests.post(url)
# 发起XXX请求
response = requests.XXX(url)

print(response.text)

注意

  • 响应结果编码格式的问题
1
2
3
4
5
6
# requests框架会自动解析response并自动设置解码方式,可以通过如下代码查看解码方式
print(response.encoding)
# 但是其自动解析的结果并不一定是正确的,如果使用bs4框架解析html产生乱码,那么可能是编码格式出现了错误
# 这时我们可以自己查看html的信息看其具体的编码格式然后手动设置,如下代码:
requests.encoding = 'utf-8'
# 当然此处设置的解码方式要和bs4使用的解码方式一致(bs4的解码方式请看bs4框架)

bs4框架

下载

1
pip install beautifulsoup4

设置解析器

1
2
3
# 此处的parser就是我们指定的解析器,bs4支持多种解析器,根据不同的需求会指定不同的解析器
# 关于解析器的内容可以查看中文官方文档
soup = bs4.BeautifulSoup(markup=response,features='parser')

解析某一元素

  • 解析title
1
print(soup.title)

注意

  • 编码格式的问题

在使用bs4框架进行解析时框架默认解析格式是‘utf-8’,如果原文档的编码格式不是utf-8那么将出现乱码,所以在使用时一定要注意使用bs4时解码的格式要和requests解码的格式保持一致,否则将出现乱码。

未完待续