requests
- 官方中文文档:https://2.python-requests.org/zh_CN/latest/
- requests在爬虫中一般用于来处理网络请求
# 导入requests模块
import requests
# 尝试向baidu发起请求 ,获得来命名为r的response对象
r = requests.get('https://www.baidu.com/')
# 返回请求状态码,200即为请求成功
print(r.status_code)
# 返回页面代码
print(r.text)
# 对于特定类型请求,如Ajax请求返回的json数据
print(r.json())
# 添加headers的get请求
headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'}
r = requests.get('https://www.baidu.com/', headers=headers)
# 添加headers的post请求
data = {'users': 'abc', 'password': '123'}
r = requests.post('https://www.weibo.com', data=data, headers=headers)
很多时候等于需要登录的站点我们可能需要保持一个会话,不然每次请求都先登录一遍效率太低,在requests里面一样很简单;
# 保持会话
# 新建一个session对象
sess = requests.session()
# 先完成登录
sess.post('maybe a login url', data=data, headers=headers)
# 然后再在这个会话下去访问其他的网址
sess.get('other urls')
beautifulsoup
当我们通过requests获取到整个页面的html5代码之后,我们还得进一步处理,因为我们需要的往往只是整个页面上的一小部分数据,所以我们需要对页面代码html5解析然后筛选提取出我们想要对数据,这时候beautifulsoup便派上用场了。
beautifulsoup之后通过标签+属性的方式来进行定位,譬如说我们想要百度的logo,我们查看页面的html5代码,我们可以发现logo图片是在一个div的标签下,然后class=index-logo-srcnew这个属性下。