当前位置: 首页 > news >正文

国家企业年报系统官网/天津seo结算

国家企业年报系统官网,天津seo结算,政府网站建设要点,企业检索网站建设上一篇文章模拟登陆存在问题用scrapy无法登录知乎,后来志明S告诉我是验证码的问题,另外知乎上xchaoinfo提到知乎登录需要保持cookies一致,都不是太理解,暂时找不到解决方案,在查找模拟登录的方法的时候,发现…

上一篇文章模拟登陆存在问题用scrapy无法登录知乎,后来志明S告诉我是验证码的问题,另外知乎上xchaoinfo提到知乎登录需要保持cookies一致,都不是太理解,暂时找不到解决方案,在查找模拟登录的方法的时候,发现了xchaoinfo大神的模拟登录各大网站的源码,暂时先去学习那个了,scrapy模拟登录的问题暂时搁置。

先拿相对简单登录知乎开始练习(模仿),以下是根据xchaoinfo的源码做的学习笔记,知识点在代码中注释了,注释的地方是我看源码不会的点,然后google查资料后自己的理解(部分注释是源码自带的)。

代码

import requests

import http.cookiejar

import re

import time

import os.path

from PIL import Image

from lxml import etree

#构造headers

user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'

headers = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Accept-Encoding':'gzip, deflate, sdch, br',

'Accept-Language':'zh-CN,zh;q=0.8',

'Cache-Control':'max-age=0',

'Connection':'keep-alive',

'Host':'www.zhihu.com',

'Upgrade-Insecure-Requests':'1',

'User-Agent':user_agent,

}

#使用登录cookies信息

session = requests.session() #实例化一个session类,session能够用同一个cookies访问不同的url

session.cookies = http.cookiejar.LWPCookieJar(filename='cookies')

try:

session.cookies.load(ignore_discard=True)

except:

print('cookie未加载')

def get_xsrf():

#_xrsf是一个动态参数

start_url = 'https://www.zhihu.com/#signin'

start_response = session.get(start_url,headers=headers)

html = start_response.text

#print(html)

select = etree.HTML(html) #使用lxml库解析

_xsrf = select.xpath('//html/body/input[@name="_xsrf"]/@value')[0]

return _xsrf

def get_captcha():

t = str(int(time.time()*1000))

captcha_url = 'https://www.zhihu.com/captcha.gif?r=' + t + "&type=login" #获得验证码图片的地址,t是需要用到格林威治时间戳

print(captcha_url)

r = session.get(captcha_url,headers=headers)

with open('captcha.jpg','wb') as f:

f.write(r.content) #r.content 是二进制内容,r.text为unicode内容

# 用pillow 的 Image 显示验证码

# 如果没有安装 pillow 到源代码所在的目录去找到验证码然后手动输入

try:

im = Image.open('captcha.jpg')

im.show()

im.close()

except:

print(r'请到 %s 目录找到captcha.jpg 手动输入' % os.path.abspath('captcha.jpg'))

captcha = input('请输入验证码:\n')

return captcha

def islogin():

#通过查看用户个人信息来判断是否已经登录

url = 'https://www.zhihu.com/settings/profile'

login_code = session.get(url,headers=headers,allow_redirects=False).status_code #不允许重定向

if login_code == 200:

return True

else:

return False

def login(account,secret):

#通过输入的用户名判断是否是手机号

if re.match(r'^1\d{10}$',account):

print("手机号登录 \n")

post_url = 'https://www.zhihu.com/login/phone_num'

post_data = {

'_xsrf': get_xsrf(),

'password': secret,

'remember_me': 'true',

'phone_num': account,

}

else:

if '@' in account:

print("邮箱登录 \n")

else:

print("您输入的账号有问题,请重新输入")

return 0 #这里的return起的作用是跳出去本次登录

post_url = 'https://www.zhihu.com/login/email'

post_data = {

'_xsrf': get_xsrf(),

'password': secret,

'remember_me': 'true',

'email': account,

}

try:

# 不需要验证码直接登录成功

login_page = session.post(post_url,data=post_data,headers=headers)

login_code = login_page.text #获得网站的内容

print(login_page.status_code) #测试是否登录成功

print(login_code) #打印网站的内容

except:

post_data['captcha'] = get_captcha()

login_page = session.post(post_url,data=post_data,headers=headers)

login_code = eval(login_page.text) #eval函数可以把list,tuple,dict和string相互转化

print(login_code['msg'])

session.cookies.save() #保存cookies,后续爬取内容时需要

try:

input = raw_input

except:

pass

if __name__ == '__main__':

if islogin():

print('您已经登录')

else:

account = input('请输入你的用户名\n> ')

secret = input("请输入你的密码\n> ")

login(account,secret)

本次练习学到的知识点

1.简单学习了requests库,了解requests简单get和post方法

2.了解requests库的session类,

session.cookies = http.cookiejar.LWPCookieJar(filename='cookies')能够讲cookies保存到本地。

同时session能够使用同一个cookies访问不同的url,为全站爬去提供简单的解决方案。

3.知道了网站的重定向是什么,学了这么久的爬虫,居然不知道重定向,汗。

4.因为对re模块不是太熟悉,先学了lxml模块的xpath,因为scrapy用xpath习惯了,源码好多用re的地方改成了xpath解析。

5.安装了pillow库,虽然完全不知道pillow库强大的功能。

6.好吧,已经学到蛮多了,最重要的是通过这次练习感觉直接对着源码,一句一句的理解(慢慢测试),要比直接找现成的解决方法更有用。

http://www.jmfq.cn/news/4898161.html

相关文章:

  • flash网站的制作/东莞网络排名优化
  • 郑州企业健康码二维码怎么申请/优化关键词快速排名
  • 建设平台网站协议/湖人队最新消息
  • 中国建设银行员工网站/媒体邀约
  • 深圳网站设计x/个人如何推广app
  • 松江品划做企业网站/中国十大seo
  • 做的很漂亮的网站/网络推广精准营销推广
  • 建站之星网站模版商城/刷推广软件
  • 免费网站建设自带后台管理程序/网站快速排名互点软件
  • 10大设计师网站/百度广告商
  • 襄阳市做网站/查询网 域名查询
  • 天津建设工程信息网网站首页/福州seo排名公司
  • 安徽省建设监理协会网站/潍坊网站定制模板建站
  • 优秀网站制作实例展示/推广引流的10个渠道
  • 网站怎么做搜索引擎/软文营销成功案例
  • 哪个网站可以自己做名片/网络seo推广
  • 网站维护客户/头条收录提交入口
  • 新闻网站建设合同/武汉网络营销推广
  • 可以网上做单的网站/seo页面优化技术
  • logo免费设计网站/百度seo推广首选帝搜软件
  • wordpress自动网站地址/百度官方平台
  • 公司网站设立与维护方案/网站建设制作费用
  • 做像美团淘宝平台网站多少钱/苹果要做搜索引擎
  • 搭建一个网站多少钱/成都seo优化排名公司
  • 做网站宜宾/企业网站推广公司
  • 电商网站建设哪家好/页优化软件
  • 成都最新房价一览表/seo的优化原理
  • 腾讯企业邮箱网页版登录入口/合肥网络seo推广服务
  • 企业网站模板下载需谨慎/免费推广网站平台
  • 网站建设对百度推广的影响/营销活动怎么做吸引人