Python爬虫——requests

Requests

requests是python语言编写,基于urllib,比urllib更加方便,节约大量工作,完全满足http测试工作。
可使用命令pip install requests安装requests库

常用方法

请求

  • GET:请求指定的页面信息,返回实现主体
  • HEAD:只请求页面的首部
  • POST:请求服务器接受所有指定的文档作为对所标识的URL的新的从属体
  • DELETE:请求服务器删除指定页面
  • HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
  • CONNECT:把服务器当做跳板,让服务器代替客户端访问其他网页
  • OPTIONS:允许客户端查看服务器的性能
  • TRACE:回显服务器收到的请求,主要用于测试或诊断

请求头

  1. Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
  2. Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。
  3. Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计、防盗链处理等。
  4. User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫 。
  5. x-requested-with :XMLHttpRequest (代表ajax请求)
  6. Accept-Language:指定客户端可接受的语言类型。
  7. Accept-Encoding:指定客户端可接受的内容编码
  8. Content-Type:也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型
  • Date:标识响应产生的时间。
  • Content-Encoding:指定响应内容的编码。
  • Server:包含服务器的信息,比如名称、版本号等。
  • Content-Type:文档类型,指定返回的数据类型是什么,如text/html代表返回HTML文档,application/x-javascript则代表返回JavaScript文件,image/jpeg则代表返回图片。

响应头

  • Set-Cookie:设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求。
  • Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

案例

一、获取搜狗搜索页面

# 导包
import requests
# 获取网页
url = 'https://www.sogou.com/'
# 发起请求
res = requests.get(url=url)
# 获取响应数据,text返回字符串形式响应数据
text = res.text
# 存储数据,当前目录下没有搜狗.html自动创建,有则覆盖
with open('./搜狗.html', 'w', encoding='utf-8') as f:
    f.write(text)

在这里插入图片描述

二、模拟查询输入的人

# 导包
import requests
# 键盘输入查询
i = input("请输入要查询人物:")
# 查询网站
url = f'https://www.sogou.com/web?query={i}'
# 模拟用户浏览浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3868.400 QQBrowser/10.8.4394.400'
}
# 重定义url、hraders
res = requests.get(url=url, headers=headers)
# 文本数据
text = res.text
# 新建文件的名
name = i + '.html'
# 以w方式、utf-8编码打开文件name(没有会自动创建)
with open(name, 'w', encoding='utf-8') as f:
	# 写入数据
    f.write(text)

在这里插入图片描述

三、百度翻译

# 导包
import requests
import json
# 指定url网页
post_url = 'https://fanyi.baidu.com/sug'
# 进行UA伪装,模拟浏览浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3868.400 QQBrowser/10.8.4394.400'
}
# 获取键盘输入内容
i = input("请输入要翻译内容:")
# 定义元组
data = {
    'kw': i
}
# 发送请求
res = requests.post(url=post_url, data=data, headers=headers)
# json方法返回的是obj(如果确认响应数据是json类型的,才可以使用json)
a = res.json()
# 定义文件名
name1 = i + '.json'
# 以w格式,utf-8编码打开文件
name = open(name1, 'w', encoding='utf-8')
# fp:文件描述符,将fp(.read()支持包含JSON文档的文本文件或二进制文件)反序列化为Python对象。
# ensure_ascii 显示文字
json.dump(a, fp=name, ensure_ascii=False)

在这里插入图片描述

四、爬取指定小说章节(简易)

# 导包
import requests
# 输入(第一章为4490686)
m = input("请输入页数:")
# 获取页面
url = f'https://www.qqxs5200.com/book_123515/4490{m}.html'
# 发送请求
res = requests.get(url=url)
# 保存文件
with open('a.html', 'w', encoding='utf-8') as f:
    f.write(res.text)

在这里插入图片描述

### 使用Python编写爬虫抓取优酷视频 #### 抓取目标与工具准备 为了实现对优酷视频的数据获取,通常会涉及到网页请求、解析HTML文档以及处理API接口返回的内容。对于这类任务,`requests`库用于发起HTTP/HTTPS网络请求;而`BeautifulSoup`或`lxml`则适合于解析HTML/XML结构化数据。如果遇到JavaScript渲染的页面,则可能需要用到Selenium这样的浏览器自动化框架[^1]。 #### 处理登录验证机制 部分网站可能会设置较为严格的反扒措施,比如验证码识别或是基于Cookies的身份认证流程。针对这种情况,在开发初期就要考虑好应对策略,例如模拟真实用户的浏览行为模式,定期更换User-Agent字符串,甚至利用第三方服务绕过图形验证码挑战等问题[^2]。 #### 数据提取逻辑设计 当面对像优酷这样大型综合性媒体平台时,直接从公开可访问的部分入手往往是最简单有效的方式之一。具体来说就是先定位到含有目标资源列表页URL模板,再依据一定规则遍历每一页直至结束条件满足为止。与此同时还要注意观察详情页链接构造规律以便后续深入挖掘更多有价值的信息项[^3]。 ```python import requests from bs4 import BeautifulSoup def fetch_video_list(page_num=1): url = f"https://www.youku.com/v_olist/c_97_p_{page_num}.html" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") video_items = [] for item in soup.select('.v-link'): title = item['title'] href = item['href'] video_items.append({ 'title': title, 'url': href }) return video_items if __name__ == "__main__": videos = fetch_video_list() for v in videos[:5]: print(f"{v['title']}: {v['url']}") ``` 此段代码仅作为基础示范用途,请勿滥用本技术手段非法采集他人受版权保护的作品!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值