python爬虫之requests的使用

先来看一下相关概念

爬虫的定义

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。

只要是浏览器能做的事情,原则上,爬虫都能够做

通用爬虫和聚焦爬虫

通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗等)的重要组成部分。主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

聚焦爬虫:是面向特定需求的一种网络爬虫程序,他与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。

在这里插入图片描述

通用爬虫的局限性
  • 通用搜索引擎所返回的网页里90%的内容无用。
  • 图片、音频、视频多媒体的内容通用搜索引擎无能为力
  • 不同用户搜索的目的不全相同,但是返回内容相同
robots协议

Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

例如:https://www.taobao.com/robots.txt
(没有法律效应,只能从道德上规范)

http和https
  • http
    • 超文本传输协议
    • 默认端口号:80
  • https
    • http + ssl(安全套接字层)
    • 默认端口号:443

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

GET请求

爬百度首页
import requests

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"
}

# 使用requests对百度首页发送get请求
response = requests.get(url="https://www.baidu.com", headers=headers)

# 修改响应的编码格式
response.encoding = "utf-8"

print(type(response.text))
print(response.text)
# print(response.content.decode())
下载百度首页logo

res = requests.get("https://www.baidu.com/img/bd_logo1.png")
r = res.content
with open("百度logo.png", "wb") as fb:
    fb.write(r)
下载音频
res = requests.get(url="http://m7.music.126.net/20200417205744/f2c9453922920974ceebe76d4643d905/ymusic/025b/525d/040c/51958d1f13e76f9787173fe94bdca8fc.mp3")
with open("与我无关.mp3", "wb") as fb:
    fb.write(res.content)
下载视频
res = requests.get("https://vdept.bdstatic.com/4966507a78694a51494a376476763847/5731313372494872/e9fb83f3ad6585df24fa02299409d5538c91f56f918e0216bd1f8b0747ebf46a7aea32ecd49d34ce11bbc9cfed7e56788fa24c177211c2aa2b51b9d92d5afef2.mp4?auth_key=1587134240-0-0-620b397d617996e1da54f3a9593e6308")
with open("111.mp4", "wb") as fb:
    fb.write(res.content)
传参

1.直接拼到地址后面

res = requests.get('http://httpbin.org/get?name=zhangsan&pwd=123')
print(res.text)

2.使用params参数传递

params = {
    'wd':'lisi',
    'pwd':'456'
}

res = requests.get('http://httpbin.org/get',params=params)
print(res.text)

在这里插入图片描述

POST请求

传参

使用data参数传递

# params能传递,但还是和拼接到url后面一样
params = {
    'a':'b'
}
# data传递的数据是放到formdata里面的,类似页面的form表单提交
data = {
    'c':'d'
}
res = requests.post('http://httpbin.org/post',params=params,data=data)
print(res.text)
有道翻译
import requests
import re

key_word = input("请输入你要翻译的内容:")

data = {
    'inputtext': key_word,
    'type': 'AUTO'
}
res = requests.post('http://wap.youdao.com/translate',data=data)
# print(res.text)

result = re.findall(r'<li>(.*?)</li>',res.text)[-1]
print(result)
有道翻译多种语言
import requests
import re

# strName = input("待翻译:")
strName = '小王王'
print("翻译" + strName)
# 自动检测,即中英
data1 = {
    'inputtext': strName,
    'type': 'AUTO'
}
# 中->日
data2 = {
    'inputtext': strName,
    'type': 'ZH_CN2JA'
}
# 中->韩
data3 = {
    'inputtext': strName,
    'type': 'ZH_CN2KR'
}
# 中->法
data4 = {
    'inputtext': strName,
    'type': 'ZH_CN2FR'
}
# 中->俄
data5 = {
    'inputtext': strName,
    'type': 'ZH_CN2RU'
}
# 中->西
data6 = {
    'inputtext': strName,
    'type': 'ZH_CN2SP'
}

res1 = requests.post("http://wap.youdao.com/translate", data=data1)
res2 = requests.post("http://wap.youdao.com/translate", data=data2)
res3 = requests.post("http://wap.youdao.com/translate", data=data3)
res4 = requests.post("http://wap.youdao.com/translate", data=data4)
res5 = requests.post("http://wap.youdao.com/translate", data=data5)
res6 = requests.post("http://wap.youdao.com/translate", data=data6)

result1 = re.findall("<li>(.*?)</li>", res1.text)[-1]
result2 = re.findall("<li>(.*?)</li>", res2.text)[-1]
result3 = re.findall("<li>(.*?)</li>", res3.text)[-1]
result4 = re.findall("<li>(.*?)</li>", res4.text)[-1]
result5 = re.findall("<li>(.*?)</li>", res5.text)[-1]
result6 = re.findall("<li>(.*?)</li>", res6.text)[-1]
print("中->英", result1)
print("中->日", result2)
print("中->韩", result3)
print("中->法", result4)
print("中->俄", result5)
print("中->西", result6)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WGS.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值