Python爬虫模拟登录京东获取个人信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫模拟登录京东获取个人信息相关的知识,希望对你有一定的参考价值。
原文 http://www.xgezhang.com/python_crawler_jingdong.html
先上我的代码。参考了上面链接的文章
# -*- coding: utf-8 -*- # !/usr/bin/python import os import urllib2 import urllib import cookielib import re import sys from bs4 import BeautifulSoup ‘‘‘ 编码方式的设置,在中文使用时用到中文时的处理方式 ‘‘‘ default_encoding = "utf-8" if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding("utf-8") def gethtml(url,data={}): if(data=={}): req=urllib2.Request(url) else: req=urllib2.Request(url,urllib.urlencode(data)) html=urllib2.urlopen(req).read() return html try: cookie = cookielib.CookieJar() cookieProc = urllib2.HTTPCookieProcessor(cookie) except: raise else: opener = urllib2.build_opener(cookieProc) opener.addheaders = [(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11‘)] urllib2.install_opener(opener) auth_url=‘https://passport.jd.com/uc/loginService‘ #auth_url = ‘http://www.nowamagic.net/‘ home_url=‘http://usergrade.jd.com/user/consume‘ #home_url = ‘http://www.nowamagic.net/librarys/nmra/‘; url = "https://passport.jd.com/uc/login" login=getHtml(url) #print login loginSoup = BeautifulSoup(login,‘html.parser‘) #查找登陆参数中的uuid uuid = loginSoup.find_all("form")[0].find_all("input")[0][‘value‘] print uuid clrName=loginSoup.find_all("form")[0].find_all("input")[6][‘name‘] clrValue=loginSoup.find_all("form")[0].find_all("input")[6][‘value‘] ‘‘‘这俩参数不是必须。。。。 eid=loginSoup.find_all("form")[0].find_all("input")[4][‘value‘] fp=loginSoup.find_all("form")[0].find_all("input")[5][‘value‘] ‘‘‘ #下载验证码图片: checkPicUrl = loginSoup.find_all("div",id="o-authcode")[0].find_all("img")[0][‘src2‘] req = getHtml(checkPicUrl) checkPic = open("checkPic.jpg","w") checkPic.write(req) checkPic.close() #调用mac系统的预览(图像查看器)来打开图片文件 os.system(‘open /Applications/Preview.app/ checkPic.jpg‘) checkCode = raw_input("请输入弹出图片中的验证码:") #登录URL url = "http://passport.jd.com/uc/loginService" # 登陆用户名和密码 postData = { ‘loginname‘:‘你自己的账号‘, ‘nloginpwd‘:‘你自己的密码‘, ‘loginpwd‘:‘你自己的密码‘, # ‘machineNet‘:‘‘, # ‘machineCpu‘:‘‘, # ‘machineDisk‘:‘‘, str(clrName):str(clrValue), ‘uuid‘:uuid, ‘authcode‘: checkCode } passport=getHtml(url,postData) print passport # 初始化一个CookieJar来处理Cookie ‘‘‘ cookieJar=cookielib.CookieJar() # 实例化一个全局opener opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) # 获取cookie req=urllib2.Request(auth_url,post_data,headers) result = opener.open(req) # 访问主页 自动带着cookie信息 ‘‘‘ result = opener.open(‘http://i.jd.com/user/info‘) # 显示结果 #print result.read() soup=BeautifulSoup(result,‘html.parser‘) #昵称 nickName = soup.find_all("input", id="nickName")[0]["value"] print "nickName:", print nickName
其实在第一次爬的时候确实是成功返回了{“success”:“http://www.jd.com”}。
但是当我回到寝室再次测试的时候却给我返回了“请刷新页面后重新提交”,暂时还没有解决。
以上是关于Python爬虫模拟登录京东获取个人信息的主要内容,如果未能解决你的问题,请参考以下文章