安装模块

安装requests,pip install requests

可以直接在pycharm的终端中安装

image

网络问题可以去国内源下载 pip install -i https://xxx

简单爬虫

在浏览器地址栏中的链接都是使用的GET方式提交

resp.可获取网页中请求的不同内容

image

结果被浏览器认为是程序发出的请求,需要绕过

image

获取user-Agent,模拟成正常浏览器

image

添加一个变量

1
2
3
4
5
6
7
8
9
10
11
12
13
import requests

url = 'https://www.sogou.com/web?query=周杰伦'

# 参数是一个字典
dic = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
}
# 简单处理一个反爬
resp = requests.get(url, headers=dic)

print(resp)
print(resp.text)

通用化

GET方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

import requests
query = input("请输入名称:")

url = f'https://www.sogou.com/web?query={query}'

# 参数是一个字典
dic = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
}

# 简单处理一个反爬
resp = requests.get(url, headers=dic)

print(resp)
print(resp.text) # 拿到网页源代码

post方式

image

1
2
3
4
5
6
7
8
9
10
11
import requests
url = "https://fanyi.baidu.com/sug"

s = input("请输入要翻译的英文单词:")
dat = {
"kw": s
}

# 发送post请求,发送的数据必须放在字典中,通过data参数进行传递
resp = requests.post(url,data=dat)
print(resp.json()) # 将服务器返回的内容直接处理成json(), =》 dict

XHR等过滤器

image

Request URL: https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20

?前面是url,后面是参数

三大块:

  • url

  • 请求方式

    image

  • 参数

    image

如果不能用双引号等直接把字符串等包起来,就打开这里

image

pycharm运行结果不自动换行,打开这里

image

加载新数据会更改start的值

image

封装参数/处理反爬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 第三个
url = "https://movie.douban.com/j/chart/top_list"
# 如果get请求参数太长,需要重新封装参数
# ?type=24&interval_id=100%3A90&action=&start=0&limit=20
param = {
"type": "24",
"interval_id": "100:90",
"action": "",
"start": "0",
"limit": "20",
}

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
}
resp = requests.get(url=url,params=param,headers=headers)
# 执行结果:https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20
# print(resp.request.url)
# 若结果为空,则被反爬
# 第一个尝试user Agent
# print(resp.text)
# 结果:{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
# print(resp.request.headers)

print(resp.text)
# 记得关闭resp
resp.close()