爬虫基础+requests

1.服务器渲染:在服务器那边直接把数据和HTML集合在一起,统一返回给浏览器,这是在页面可以看到源代码的情况下

2.客户端渲染: 每次请求只要一个html,第二次请求拿到数据,进行数据展示,在页面源代码中,看不到数据

优点:拿到的数据是非常有规律的

HTTP

请求头中常见的一些重要的内容(爬虫需要)

1.User-Agent:请求载体的身份标识(用啥发送的请求)

2.Referer:防盗链(这次请求是从哪个页面来的?返爬会用到的)

3.cookie:本地字符串数据信息(用户登录信息,返爬的token)

响应头里重要的内容:

1.cookie:本地字符串数据信息(用户登录信息,反爬的token)

2.各种神奇的莫名其妙的字符串(一般都是token字样,防止各种攻击和反爬)

 

安装requests




pip install requests

国内源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  requests

推荐 清华源  阿里源

地址栏里统一用get请求

Requests

1、发送post请求时,发送的数据必须是字典的形式,放在字典中,通过data参数进行传递,如果出现乱码的情况,可以用python基础中的.json

例如:
dat = {
   "kw": s
}

# 发送post请求
resp = requests.post(url, data=dat)
print(resp.json())
post请求带参是data
2、发送get请求时带参是params
3、resp.close()

运行完事之后,最好使用这个关闭爬虫代码,不然访问的次数过多会出现毒死的现象就会报错

4.如果出现了客户端渲染,就是需要第二次才能拿到请求的话就将headers打印出来,将浏览器的‘User-alive’以字典的形式复制到pycharm中,请求的时候带参(headers)请求
例如
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/88.0.4324.190 Safari/537.36'
}
resp = requests.get(url,headers=dic)  #处理了一个小小的反爬
print(resp)
print(resp.text) # 拿到页面源代码
如果路由过长,可以使用params重新封装
例如:
import requests

url = 'https://movie.douban.com/j/chart/top_list'

# 重新封装参数
param = {
   "type": "24",
   "interval_id": "100:90",
   "action": 100,
   "start": "0",
   "limit": 20,
}

headers = {
   'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}

resp = requests.get(url=url,params=param,headers=headers)

# print(resp.json())
print(resp.request.headers)
# resp.close()


代理

原理:通过第三方的一个机器去发送请求 但一般并不支持,会触碰法律,带你从门到入狱

 
posted @ 2021-06-06 21:47  测试小能手1  阅读(51)  评论(0编辑  收藏  举报