1.引用自己定义一个类
pip search 工具包名字 例如:pip search UserAgent"
pip install fake_useragent
5. cookie
注意: cookie 是对方的服务器设置的
1.如果网站登录的时候需要写验证码,可以考虑通过cookie直接登录
例如:知乎网
注意: cookie需要手动登录以后再粘贴
2.如果网站登录的时候不需要验证码,可以考虑通过代码自动登录
例如:抽屉网
注意: 它的cookie是通过代码自动获取的
6. 抽屉网的登录逻辑(其他网站不适用)
1.先获取首页返回的cookie,因为它是用户的凭证
2.开始登录(要携带上第一步的cookie)
3.开始点赞/评论
7.注意: 通过 浏览器获取的操作一般都是 get请求
response = requests.get(
url,
headers={
# 对应from random_agent import RandomAgent
"User-Agent": RandomAgent.rand()
# "User-Agent": agent.random
}
2.携带1的cookie进行登录,服务器返回另一个cookie
9.python27和python36 的区别:
# python2.7
f = open("1.txt", "w")
import codecs
f = codecs.open("1.txt", "w", encoding="utf-8")
# python3,6
f = open("1.txt", "w", encoding="utf-8")
10. 面试题
网络七层从下往上的协议有哪些?
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
11.类的相关知识
OO:面向对象
OOP:面向对象编程
OOA:面向对象分析
OOD:面向对象设计
OO的特点:封装 继承 多态
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。允许将子类类型的指针赋值给父类类型的指针
继承的特点:
1.子类拥有父类的所有属性和方法
2.子类拥有自己的属性和方法
3.子类可以重写父类的方法
例如:
张无忌-张翠山
1.张无忌 拥有 张翠山的财产/剑/衣服(属性)....武当剑法(方法)
2.张无忌 自己 买房子,学习了乾坤大挪移
3.张无忌 改进了 武当剑法
from random_agent import RandomAgent
2. 引用系统的包
from fake_useragent import UserAgent
3.创建对象
agent = UserAgent()
4. 不要重复
造轮子
pip search 工具包名字 例如:pip search UserAgent"
pip install fake_useragent
5. cookie
注意: cookie 是对方的服务器设置的
1.如果网站登录的时候需要写验证码,可以考虑通过cookie直接登录
例如:知乎网
注意: cookie需要手动登录以后再粘贴
2.如果网站登录的时候不需要验证码,可以考虑通过代码自动登录
例如:抽屉网
注意: 它的cookie是通过代码自动获取的
6. 抽屉网的登录逻辑(其他网站不适用)
1.先获取首页返回的cookie,因为它是用户的凭证
2.开始登录(要携带上第一步的cookie)
3.开始点赞/评论
7.注意: 通过 浏览器获取的操作一般都是 get请求
response = requests.get(
url,
headers={
# 对应from random_agent import RandomAgent
"User-Agent": RandomAgent.rand()
# "User-Agent": agent.random
}
)
字典headers的关键字User-Agent有两种方式获得
1.自己写一个关于获取useragent的函数 "User-Agent": RandomAgent.rand()
2.用系统自带的 "User-Agent": agent.random
8.cookie值得设置:
2.携带1的cookie进行登录,服务器返回另一个cookie
9.python27和python36 的区别:
# python2.7
f = open("1.txt", "w")
import codecs
f = codecs.open("1.txt", "w", encoding="utf-8")
# python3,6
f = open("1.txt", "w", encoding="utf-8")
10. 面试题
网络七层从下往上的协议有哪些?
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
11.类的相关知识
OO:面向对象
OOP:面向对象编程
OOA:面向对象分析
OOD:面向对象设计
OO的特点:封装 继承 多态
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。允许将子类类型的指针赋值给父类类型的指针
继承的特点:
1.子类拥有父类的所有属性和方法
2.子类拥有自己的属性和方法
3.子类可以重写父类的方法
例如:
张无忌-张翠山
1.张无忌 拥有 张翠山的财产/剑/衣服(属性)....武当剑法(方法)
2.张无忌 自己 买房子,学习了乾坤大挪移
3.张无忌 改进了 武当剑法
12.完整代码:
# -*- coding:utf-8 -*-
import requests
# 引用自己定义一个类
from random_agent import RandomAgent
# 引用系统的包
from fake_useragent import UserAgent
# 创建对象
agent = UserAgent()
for i in range(100):
print(agent.random)
# 不要重复造轮子
# pip search 工具包名字 例如:pip search UserAgent"
# pip install fake_useragent
url = "http://dig.chouti.com"
# 通过浏览器获取的操作一般都是get请求
response = requests.get(
url,
headers={
# 对应from random_agent import RandomAgent
"User-Agent": RandomAgent.rand()
# "User-Agent": agent.random
}
)
cookies = response.cookies.get_dict()
url = "http://dig.chouti.com/login"
response = requests.post(
url,
data={"phone": "8615896901897", "password": "qweqweqwe1", "oneMonth": "1"},
headers={"User-Agent": agent.random},
cookies=cookies
)
# print(response.text)
cookies1 = response.cookies.get_dict()
print(cookies)
print(cookies1)
# 查看--点赞-- 之后的请求结果
url = "http://dig.chouti.com/link/vote?linksId=17723556"
response = requests.post(
url,
headers={"User-Agent": agent.random},
cookies=cookies
)
print(response.text)
# 1.第一次访问首页的时候 服务器 返回一个cookie
# 2.携带1的cookie进行登录,服务器返回另一个cookie
'''
# python2.7
f = open("1.txt", "w")
import codecs
f = codecs.open("1.txt", "w", encoding="utf-8")
# python3,6
f = open("1.txt", "w", encoding="utf-8")
'''
13.自己创建的获取useragent代码:
# -*- coding:utf-8 -*-
# 自己封装一个用于获取User-Agent的类
import random
# OO:面向对象
# OOP:面向对象编程
# OOA:面向对象分析
# OOD:面向对象设计
'''
OO的特点:封装 继承 多态
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。允许将子类类型的指针赋值给父类类型的指针
继承的特点:
1.子类拥有父类的所有属性和方法
2.子类拥有自己的属性和方法
3.子类可以重写父类的方法
例如:
张无忌-张翠山
1.张无忌 拥有 张翠山的财产/剑/衣服(属性)....武当剑法(方法)
2.张无忌 自己 买房子,学习了乾坤大挪移
3.张无忌 改进了 武当剑法
'''
class RandomAgent(object):
agent_list = [
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"
]
@classmethod
def rand(cls):
# cls.agent_list类属性
# self.agent_list对象属性
# 从列表中随机选择一个元素
return random.choice(cls.agent_list)
if __name__ == '__main__':
print(RandomAgent.rand())
14.运行结果