一,处理cookie模拟进行模拟登录

前面小编进行爬取的都是没设登录的网站,那么像QQ空间,17k小说网等众多网站,不先进行登录将无法进入个人主页的网站,是不是爬虫就束手无策了呢?

答案肯定是否定的,下面就来用代码模拟登录!!!

1,何为cookie?

cookie是储存在客户端的一组键值对。如下图QQ空间的cookie

2,cookie和爬虫之间有何关联?

sometimes,对一张网页进行请求时,假如要是在请求过程中不携带cookie值的话,那么我们将无法请求到页面正确的数据。

therefore,cookie是爬虫中一个常见且典型的反爬机制!

3,17k小说网例子

拿取登录对应的url地址(https://passport.17k.com/ck/user/login)

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-27import requests# 创建一个session对象
session = requests.Session()url1 = 'https://passport.17k.com/ck/user/login'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
data = {'loginName': '15029494474',  # 这里填写账号'password': 'woshinidaye'    # 这里填写密码
}
# 进行登录
res = session.post(url=url1, headers=headers, data=data)
print(res)<Response [200]>

返回200即说明模拟登录成功!

接下来拿取小编书架中收藏的书的基本信息,如下图

因为这些是动态加载的内容,所以去检查中在Network中,选中XHR,按f5刷新页面找到如下图包打开,并复制Headers中的url地址

仔细观察要的页面内容全在这里

import requests
import json# 创建一个session对象
session = requests.Session()url1 = 'https://passport.17k.com/ck/user/login'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
data = {'loginName': '15029494474','password': 'woshinidaye'
}
# 进行登录
res = session.post(url=url1, headers=headers, data=data)
# print(res)# 拿取我的书架上的书
url2 = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
resp = requests.get(url=url2, headers=headers).text
print(resp){"status":{"code":10103,"msg":"用户登陆信息错误"},"time":1616827996000}

报错了,说明当我去拿页面内容时,如果没携带cookie,网站就觉得咱们没登录!

# 拿取我的书架上的书
url2 = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
resp = session.get(url=url2, headers=headers).text
print(resp)


解析内容并持续化保存到本地

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-27import requests
import json# 创建一个session对象
session = requests.Session()url1 = 'https://passport.17k.com/ck/user/login'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
data = {'loginName': '15029494474','password': 'woshinidaye'
}
# 进行登录
res = session.post(url=url1, headers=headers, data=data)
# print(res)# 拿取我的书架上的书
url2 = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
resp = session.get(url=url2, headers=headers).text
# print(resp)# 把json字符串转换成python可交互的数据类型字典
resp_data = json.loads(resp)
data_list = resp_data['data']
# print(data_list)
f = open('./17k.txt', 'w', encoding='utf-8')
for data in data_list:# 书的类型category = data['bookCategory']['name']# 书名title = data['bookName']# 最近更新时间chapter = data['lastUpdateChapter']['name']# 作者author = data['authorPenName']# print(category, title, chapter, author)# 简单进行数据格式处理content = '类型:' + category + " , " + '书名:' + title + " , " + '最新更新章节:' + chapter + " , " + '作者:' + author + '\n\n'f.write(content)print('over!!!')

二,使用代理IP

1,何为代理IP?

五个字,就是代理服务器!

2,请问要她有什么鸟用?

用来转发请求和响应

3,请问在爬虫中为何要用他?

假如在爬虫中短时间内对某个服务器发起了高频率的请求,则服务器会检测到这种异常,进而会暂时封掉我们的IP地址,使在封的时间段内无法再访问服务器。因此,就要使用代理IP进行操作,使用代理IP后,服务器接收到请求的对应IP就是代理服务器的,而并非我们真正客户端的!

4,代理服务器的几种匿名度

①透明代理:就字面意思,也能猜到八九不离十.。使用此种代理,服务器知道你使用了代理,也知道你的真实IP。

②匿名代理:使用此种代理,服务器知道你使用了代理,但是不知道你真实的IP。

③高匿代理:使用此种代理,服务器不知道你使用了代理,也不知道你的真实IP。

5,小编推荐的代理(智连HTTP)

URL地址:http://http.zhiliandaili.cn/

免费的代理实在是能把人心态玩崩,所以小编选择卖肾续费版的,如下图

练习使用一天3元人民币。小编尽管家徒四壁,但也能勉强接受!

购买完成后我们点击API提取,如下图

据小编体验,有效1~5分钟的IP实际有效时间只有两分钟左右

6,编写代码拿到代理的IP地址

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-27
import requests
from lxml import etreeurl = 'http://ip.ipjldl.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=5&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=15'page_content = requests.get(url).text
tree = etree.HTML(page_content)
all_ip = tree.xpath('//body//text()')
https_ip = []
for ip in all_ip:dic = {'https': ip}https_ip.append(dic)
print(https_ip)[{'https': '123.73.63.67:46603'}, {'https': '220.161.32.108:45111'}, {'https': '183.159.83.169:45112'}, {'https': '222.37.78.253:32223'}, {'https': '114.99.11.51:23890'}]

7,让某个网站封掉我的ip

这个最好玩了,哈哈哈!看客朋友们千万不要学小编奥,我只为做个实例

对快代理(https://www.kuaidaili.com/free/inha)发起高频请求,使其封掉我的本机IP

import requests
from lxml import etreeurl = 'https://www.kuaidaili.com/free/inha/%s/'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
all_ip = []
for i in range(1,100):page_url = url % ipage_content = requests.get(url=page_url, headers=headers).texttree = etree.HTML(page_content)ip = tree.xpath('//*[@id="list"]/table')for d in ip:page = d.xpath('./tbody/tr/td[1]/text()')# print(one)for d in page:all_ip.append(d)print(len(all_ip))

只撸了一下,就被封了,这也太配合了吧(再去刷新页面),如下图


8,上代理ip

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-27
import requests
from lxml import etree
import random# 代理对应的代码
url = 'http://ip.ipjldl.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=5&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=15'page_content = requests.get(url).text
tree = etree.HTML(page_content)
all_ip = tree.xpath('//body//text()')
https_ip = []
for ip in all_ip:dic = {'https': ip}https_ip.append(dic)
# print(https_ip)# 用代理再次发起请求
url = 'https://www.kuaidaili.com/free/inha/%s/'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
}
all_ip = []
for i in range(1,2):page_url = url % i# 加入代理IPpage_content = requests.get(url=page_url, headers=headers, proxies=random.choice(https_ip)).texttree = etree.HTML(page_content)ip = tree.xpath('//*[@id="list"]/table')for d in ip:page = d.xpath('./tbody/tr/td[1]/text()')for d in page:all_ip.append(d)print(len(all_ip))


回头再去刷新页面,依然无法访问,说明代理起作用了!

躲在被窝里偷偷学爬虫(6)---处理cookie模拟登录及代理IP相关推荐

  1. python爬虫学习笔记2模拟登录与数据库

    前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...

  2. python爬虫token_Python入门:模拟登录(二)或注册之requests处理带token请求

    转自http://blog.csdn.net/foryouslgme/article/details/51822209 首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模 ...

  3. Python爬虫——Cookie模拟登录

    文章目录 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 2.Handler处理器 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 现在很多网站需要用户成功登录 ...

  4. 爬虫实战篇(模拟登录)

    爬虫实战篇(模拟登录) 阅读目录 (1).登录实质 (2).什么是模拟登陆 (3).实现方式 (4).实例讲解(模拟登录去哪儿网)–这里我们用第二种实现方式 (1).登录实质 互联网上的部分网站需要登 ...

  5. request body 里丢东西了_26. Scrapy 框架-模拟登录-Request、Response

    1. Scrapy-Request和Response(请求和响应) Scrapy的Request和Response对象用于爬网网站. 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达 ...

  6. python爬虫(四)cookie模拟登录和反反爬案例

    处理不被信任证书的网站 SSL证书:数字证书的一种,配置在服务器上面的,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL证书的特点:遵循了SSL协议,由收信 ...

  7. python fastapi 获取所有header信息_Python爬虫实战五之模拟登录淘宝并获取所有订单...

    点击上方[Python与人工智能社区]→右上角[...]→[设为星标⭐] 经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家 ...

  8. Python爬虫实战(5):模拟登录淘宝并获取所有订单(1)

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 1. python模拟登录淘宝网页 2. 获取登录用户的 ...

  9. python模拟登记获取cookie_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...

    在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 使用Cookie进行模拟登录 现在大多数的网站都是使用Coo ...

  10. Python3网络爬虫(四):使用User Agent和代理IP隐藏身份

    运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载请注明作者和出处:http://blog.csdn.net/c406495762/article ...

最新文章

  1. android 获取布局textview,android – 获取TextView中文本的位置
  2. 【进展】冰箱运行监测系统:进展汇报,顺理思路
  3. Wannafly挑战赛22 B 字符路径 ( 拓扑排序+dp )
  4. 棍子节快乐~ 顺便转一篇weka源码分析解析~【转自weka中文网】
  5. 计蒜客 逃生+动态规划
  6. C#的多线程机制探索1
  7. python运行脚本命令行选项
  8. 为什么python工程师掌握这些就够了_Python学到什么程度才可以去找工作?掌握这4点足够了!...
  9. Asp.net Request方法获取客户端的信息
  10. php imagedashedline,如何用php作线形图的函数
  11. 他教全世界程序员怎么写好代码,而且将所有答案写在这本书里
  12. MTK山寨机个性化DIY移植MRP初步探讨
  13. 计算机磁盘文件怎么加密,怎么加密磁盘-文件夹加密超级大师加密磁盘的方法 - 河东软件园...
  14. 股票因子扩展2(双神因子计算)——从零到实盘5
  15. 如何运用dos命令进入C盘?Dos常用命令大全
  16. 电脑主板详细介绍(细图!!)
  17. php短信功能实现原理,基于信息熵原理分词的php实现
  18. 阿里云轻量服务器WordPress镜像建网站教程(图)
  19. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第二课
  20. 安装MYSQL-8.0.30和MYSQL-5.7.28

热门文章

  1. java 注解 @Deprecated
  2. c语言的字符型都有什么作用是什么,字符型数据是什么意思怎么理解
  3. 已解决WARNING: There was an error checking the latest version of pip.
  4. 【算法设计与分析】三个博弈论算法分析
  5. 房地产开发商崩盘样本:楼盘捂了两年,欠40亿巨债
  6. 在这个世界我只喜欢三件事---暮光之城
  7. 百度风云榜实时热点API
  8. 网络会议openmeetings下的openmeetings-util文件分析3
  9. adb shell input keyevent 模拟按键事件
  10. npm WARN read-shrinkwrap This version of npm is compatible...报错解决