爬虫基础 requests
1. 爬虫的用途
- 爬去数据用做网站展示
- 爬去数据用来为大数据或者人工智能服务
2. 什么是爬虫?
模拟浏览器发送请求,获取响应的程序
3. 爬虫的分类
3.1 通用爬虫
搜索引擎的爬虫,爬去整个互联网的数据
3.2 聚焦爬虫
针对特定网站专门写的抓取数据的程序
聚焦爬虫的流程
- 准备url列表
- 拿到一个url发起请求,获取响应
- 响应提取
- 提取的是数据,数据保存
- 提取的是url,放入url列表
rootbots协议:网站规定搜索引擎可以爬去的内容范围,只是道德约束
4. 爬虫程序的响应
爬虫程序的响应 以 url对应的响应为准,不能以elements为准
5. 重要的请求头
- Cookie: 保存用户登陆的凭证,如果要访问登陆后的页面去获取数据,必须携带Cookie
- User-Agent: 表示请求者的身份,反爬的必要手段,每次请求都必须携带
- Referer:页面来源处
6. get和post请求的区别
- 最直观的就是语义上的区别,get用于获取数据,post用于提交数据。
- get参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的限制),而post无限制
- GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接,而POST请求会把请求的数据放置在HTTP 请求体中。
- 更多资料,请查看post请求和get请求的区别
7. python3 字符串
- str类型 str.endcode() -> bytes
- bytes类型 bytes.deoce() -> str
>>> str1 = "黑马程序员"
>>> type(str1)
<class 'str'>
>>> str1.encode("utf-8")
b'\xe9\xbb\x91\xe9\xa9\xac\xe7\xa8\x8b\xe5\xba\x8f\xe5\x91\x98'
>>> a = str1.encode("utf-8")
>>> type(a)
<class 'bytes'>
>>> a.decode("utf-8")
'黑马程序员'
8. requests库的基本使用
pip install requests
import requests
url = "https://www.baidu.com"
resp = requests.get(url)
# 页面响应,解码后数据,编码是根据响应头部自动推测的,有可能不对,可以指定
resp.encoding = "utf-8"
print(resp.text)
# 页面响应数据,原始的bytes类型,需要自行解码
print(resp.content)
print(resp.content.decode())
案例1. 拨号
import requests
import time
def dial():
url = "http://172.16.64.1/goform/formWebAuthUserSubmit?userName=xxx&userPasswd=xxxx&userCommand=userAuth"
resp = requests.get(url)
print("链接成功")
while True:
url = "https://www.baidu.com"
try:
requests.get(url, timeout=3)
except Exception as ret:
print(ret)
dial()
finally:
time.sleep(30)
9. 使用requests下载图片并且保存
#导入requests模块
import requests
#url链接
url = "http://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png"
#获取数据
resp = requests.get(url)
#保存数据
with open('images/1.png', 'wb') as f:
f.write(resp.content)