day21 数据获取
一、HTTP - 超文本传输协议
-
请求:
请求行:请求方式,请求路径、协议版本
请求头:键值对
Host --> 请求的主机
Accept-- > 接受的内容类型
User-Agent – >操作系统和浏览器平台
Accept-Language --> 浏览器语言设定
Accept- Encoding – 》编码和压缩方式
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.362.响应:
相应行:协议版本 响应状态码
2xx:成功
3xx:重定向
4xx:请求有问题
404:Not Found —> 找不到对应的资源
401:Unauthorized — >未授权
403:Forbidden – >禁用(没权限)
405:Method not Allows —>请求的方法不对
418:I am a tea pot --> 服务器不能给到想要的
5xx:服务器问题
响应头:键值对
空行
消息体:服务器给浏览器的内容 -->(如果请求是网页,则返回网页源代码)
二URL
-
URI – >统一资源标识符 – > Uniform Resource Identifier 网络上的一个资源唯一构成
URI – >URL/URN(urn:isbn:)
URL – > 网址— Uniform Resource Locator 统一资源定位
str -->字符串 – encode() – bytes
bytes — > 字节串 – > decode() – >str
url = 协议//用户名:口令@主机(服务器IP地址):端口号/路径/资源名称三、数据获取
from datetime import time from random import random import requests import re # 获取搜狐首页 resp = requests.get('https://www.sohu.com/') print(type(resp)) print(resp.text) # 获取百度标志 resp = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png') print(type(resp)) print(resp.content.decode('utf-8')) #获取豆瓣top250电影名 for page in range(10): re_str = re.compile(r'\<span class="title"\>(.+?)\</span\>') resp = requests.get( url=f'https://movie.douban.com/top250?start={page * 25}', headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/88.0.4324.182 Safari/537.36' } ) # print(resp.text) movie_title = re_str.findall(resp.text) for title in movie_title: print(title) time.sleep(random.randint(3, 5))