一、 本文实现需求
1、 登录用户名与密码的名称是动态的,动态爬取
2、 登录页面还有一些其他特征信息,动态爬取
3、 登录后,爬取页面任意数据
二、 登录原理
1、 相关处理技术
a) 采用requests的session进行get/post操作
b) 采用bs4分析页面数据
2、 页面抓取流程
通过chrome,打开登录页面,f12打开调试,network测试页面登录信息
第一步:取得登录页面信息
第二步:真正登录
第三步:爬取登录后的页面信息

三、 全部源代码如下
# -*- coding: utf-8 -*- """ 2018-06-14 10:39:44 作者:刘明 """ import requests from
bs4import BeautifulSoup #第一步:取得用户名与密码的动态名称,名称是动态的,及其他动态登录信息 url =
"http://www.v2ex.com/signin" headers = { "User-Agent" : 'Mozilla/5.0 (Windows
NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13
Safari/537.36', "Referer": "http://www.v2ex.com/signin" }
session=requests.session() response=session.get(url,headers=headers)
html=response.content soup=BeautifulSoup(html,'html.parser') s1=str(soup)
#观测登录页面,需要取得那些信息 username=input('请输入用户名:') password=input('请输入用密码:')
#用户名与密码的动态名称 usernamecode=soup.find('input',{'placeholder':'用户名或电子邮箱地址'})['name'
]#每次可能不相同,本次是:2c014ff2140fe6171682d56a2228428f167195488a1d652cf5c6d18a0360a5d6
passwordcode=soup.find('input',{'type':'password'})['name']
#本次结果是:2c014ff2140fe6171682d56a2228428f167195488a1d652cf5c6d18a0360a5d6
once=soup.find('input',{'name':'once'})['value'] next=soup.find('input',{'name':
'next'})['value'] postData={ usernamecode:username, passwordcode:password,
'once':once, 'next':next } #第2步:真正提交
response=session.post(url,postData,headers) status=response.status_code
#得到结果:200,表明登录成功 #第3步:依据session进入任何想进入的页面 response = session.get(
'https://www.v2ex.com/settings',headers=headers) #OK resonse = session.get(
'https://v2ex.com/mission/daily',headers=headers) #OK resonse = session.post(
'https://v2ex.com/mission/daily',headers=headers) #OK resonse = session.get(
'https://www.v2ex.com/member/'+username,headers=headers) #OK
page=response.content.decode('utf-8') #汉字无乱码
#如果取得的page是json数据,则采用下面方法转换,如果不是json,则转换异常为:JSONDecodeError import json
data=json.loads(page)
created by 刘明
www.isscollege.com

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信