热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模拟登陆国内著名知识交流网站

之前看了很长时间的前端相关知识,怕python手生,写个模拟登陆恢复一下zhihu网上的info有些是需要登陆后才能访问爬去的,所以不妨试一试1首先自己登陆,然后用fiddler进行抓包发现登陆zh

之前看了很长时间的前端相关知识,怕python手生,写个模拟登陆恢复一下

zhihu网上的info有些是需要登陆后才能访问爬去的,所以不妨试一试

1 首先自己登陆,然后用fiddler进行抓包

发现登陆zhihu需要post以下data:

A?, 验证码哪去了,算了,没有更好。

下面就要编写代码了,稍等,先看一下zhihu的response

resp的类型是json格式,经过检查,msg的值就是我们的登录状态了,所以一会我们会打印出这个值证明是否登录。

2 下面就不多说了,直接上代码

#!/usr/bin/python
#
-*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup
import COOKIElib
import json

HomePage
= 'https://www.zXXXu.com/' # 主页网址
#
= r'zhihu_COOKIEs.txt'

session
= requests.session()

COOKIE
= COOKIElib.COOKIEJar() #这个方法可以暂存COOKIE
'''
session.COOKIEs = COOKIElib.MozillaCOOKIEJar(filename) #这个方法是将COOKIE放入文件中
try:
session.COOKIEs.load(filename=filename, ignore_discard=True, ignore_expirex=True) #gnore_discard的意思是即使COOKIEs将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中COOKIEs已经存在,则覆盖原文件写入,
except:
print 'COOKIE can not load!'
'''

headers
= {'Connection': 'keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding': 'gzip, deflate, sdch',
'Host': 'www.zXXXu.com',
}



def get_xsrf():
text
= session.get(HomePage, headers=headers).text
soup
= BeautifulSoup(text, 'html.parser')
result
= soup.find('div', class_='view view-signin').find('input')['value']
return result


#获取验证码
def get_captcha():
pass


def login_zhihu(phone, passwd):
login_url
= HomePage+'/login/phone_num'
data
= {
'_xsrf': '%s' % get_xsrf(),
'password': passwd,
'phone_num': phone,
'captcha_type': 'cn'
}
result
= session.post(login_url, data=data, headers=headers)
print json.loads(result.text)['msg'] # result的body是son格式,而'msg'的值是登录状态
return


if __name__ == '__main__':
phone
= raw_input('Please input phone_num: ')
passwd
= raw_input('Please input password: ')
url
= HomePage + '/settings/profile' # 登录后才可以访问自己的profile
login_zhihu(phone, passwd)
resp_status
= session.get(url, headers=headers, allow_redirects=False).status_code # 此处关闭了跳转的操作
print resp_status # 返回结果是访问状态码

里面有两点需要说明

2.1 COOKIE的处理,我用了一个COOKIEjar存储了COOKIE,大家这步也可以忽略。

2.2 headers一定要写全,之前改个UA就能登录了,现在需要都写上才可以,zhihu也是反爬上挣扎(我可是在这里辛辛苦苦试了很多遍才察觉出来,大家不要像我这么傻)

 

3 最后就是返回的结果了

 

最后最后给大家推荐一个jianshu的作者写的zhihu爬虫,它的里面包括处理验证码(我是真的很烦手动输入)链接地址


推荐阅读
  • Request对象和Response对象request:(请求)当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。Djang ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文总结了解决python文件读写乱码问题的方法。其中包括错误的打开方式和正确的打开方式,并提供了相应的代码示例。建议在进行写入操作后先将文件关闭,然后再打开,最后再读取文件。若文件编码是utf-8,则需要在读取文件时添加decode('utf-8')。这样操作可以避免在打开记事本时出现乱码问题。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • AFNetworking、MKNetworkKit和ASIHTTPRequest比较
    2019独角兽企业重金招聘Python工程师标准之前一直在使用ASIHTTPRequest作为网络库,但是由于其停止更新,iOS7上可能出现更多的 ... [详细]
  • 开发笔记:python之Bottle框架
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python之Bottle框架相关的知识,希望对你有一定的参考价值。一、简单的Bottle框架1)bott ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
王孟儒062
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有