最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序。

首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码。查阅资料后,发现可以使用Selenium的自动测试框架,决定用这个框架实现登陆。

首先下载一个纯净版的firefox浏览器,放到主目录下,然后用python打开浏览器:

def openbrowser_login():

binary=FirefoxBinary(os.getcwd()+'/Firefox/Firefox.exe')

profile=FirefoxProfile()

profile.set_preference("browser.cache.disk.enable",False)

profile.set_preference("browser.cache.offline.enable",False)

driver=webdriver.Firefox(firefox_binary=binary,firefox_profile=profile)

driver.get('http://zhitongche.taobao.com/')

while(True):

if(len(driver.window_handles)>1):

print('检测到页面跳转!')

driver.switch_to.window(driver.window_handles[1]);

time.sleep(3)

driver.get(driver.current_url)

time.sleep(5)

break;

else:

time.sleep(2)

cookie = [item["name"] + "=" + item["value"] for item in driver.get_cookies()]

cookiestr=';'.join(item for item in cookie)

try:

driver.quit()

except Exception as e:

pass

return cookiestr

实现的方式就是先去文件目录下找到firefox的启动文件,然后使用浏览器打开淘宝直通车的登陆页,程序每隔两秒检测一次页面,如果发现新开了额外的标签,就认为是登录成功,这时把页面的cookie保存下来并返回。打开浏览器时同时设置了一些属性,profile是浏览器属性设置文件,这里将浏览器缓存功能关闭。

下面是实现检查登陆的函数:

def check_login(cookiestr):

print('开始登陆验证!')

url='https://i.taobao.com/my_taobao.htm'

headers= {

'Host':'i.taobao.com',

'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',

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

'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

# 'Accept-Encoding':'gzip, deflate',

'Referer' :'https://www.taobao.com',

'Content-Type': 'application/x-www-form-urlencoded',

'Connection' : 'Keep-Alive',

'Cookie' : cookiestr,

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

}

request=urllib.request.Request(url,headers=headers)

try:

response=urllib.request.urlopen(request)

# print(response.geturl())

if(response.geturl()==url):

print('登陆验证通过!')

return True

except Exception as e:

print(e)

print('登陆验证失败!请重新登陆!')

return False

然后是检查淘宝直通车权限,如果检查权限通过,就将cookie文件保存下来方便下次使用:

def check_subway(cookiestr):

print('开始淘宝直通车验证!')

url='http://subway.simba.taobao.com/bpenv/getLoginUserInfo.htm'

headers= {

'Host':'subway.simba.taobao.com',

'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',

'Accept':'application/json, text/javascript, */*; q=0.01',

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

'Connection' : 'Keep-Alive',

'Cookie' : cookiestr,

'Origin':'http://subway.simba.taobao.com',

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

'X-Requested-With':'XMLHttpRequest'

}

request=urllib.request.Request(url,headers=headers)

data={'_referer':'/tools/insight/index'}

postdata=urllib.parse.urlencode(data).encode('utf-8')

try:

response=urllib.request.urlopen(request,data=postdata)

string=response.read().decode()

parse=json.loads(string)

if(parse['code']=='200'):

print('淘宝直通车验证通过!您当前以登陆')

fp=open('cookie','wt')

fp.write(cookiestr)

fp.close()

print('登陆cookie已经保存!')

return parse['result']['token']

except Exception as e:

print(e)

print('淘宝直通车验证失败!请重新登陆!')

return False

在主函数中,程序将优先加载cookie文件,cookie失效或没有cookie文件时打开浏览器进行登陆:

#主函数

if(os.path.exists('cookie')):

print('检测到cookie文件!将使用cookie登陆!')

fp=open('cookie','r')

cookiestr=fp.read()

fp.close()

else:

cookiestr=openbrowser_login()

while(True):

if(check_login(cookiestr)):

token=check_subway(cookiestr)

if(token!=False):

break;

cookiestr=openbrowser_login()

python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)相关推荐

  1. python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例

    转载请注明出处:python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例 我们在前面的文章中已经学习了如果使用python进行数据抓取. 但我们常常会遇到一种场景,就是想要获取的页面内容或者接 ...

  2. 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(下)(35)

    上次已经把python文件挂载到虚拟机上了,这次主要设置下虚拟机通过docker容器的方式. 运行 python 代码运行 >启动一个crt的会话 docker run -it -v /root ...

  3. python模拟登录网站_Python模拟登录淘宝都实现了,你还怕模拟登录?

    文章转载自公众号 :裸睡的猪 , 作者 猪哥66 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟登录淘宝,但是 ...

  4. 怎么获取web开发怎么获取手机的唯一标识_PYTHON实现北京住宅小区数据抓取-(Web服务API-地点检索服务)

    最近工作需要整理了一些百度地图接口查询北京住宅小区的相关信息.该篇文章主要从如下3个方面的说明:Web服务API -地点检索服务.需求分析 和 PYTHON实现 . Web服务API -地点检索服务: ...

  5. python模拟登录网站_Python爬虫实战之(四)| 模拟登录京东商城

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 前两篇和大家分享了爬虫中http的一些概念和使用方法,基础篇我们主要介绍了http的请求头,高级篇我们主要介绍了co ...

  6. python模拟登录网站_Python爬虫之模拟登录wechat

    不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...

  7. python模拟app请求_python + 爬虫 + fiddler + 夜神模拟器 爬取app(1)

    抓包 抓包是爬虫里面经常用到的一个词,完整的应该叫做抓取数据请求响应包 ,而Fiddler这款工具就是干这个的 普通https抓包设置 打开Fiddler ------> Options .然后 ...

  8. python修改微信运动步数_微信运动数据抓取(Python)

    "微信运动"能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据.url类似于:http://hw.weixin.qq.com/steprank/step/person ...

  9. 【Python】B站博人传评论数据抓取 scrapy

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  10. 【python爬虫】网贷天眼平台表格数据抓取

    一.需求分析 抓取url: http://www.p2peye.com/shuju/ptsj/ 抓取字段: 昨日数据 排序 平台名称 成交额 综合利率 投资人 借款周期 借款人 满标速度 累计贷款余额 ...

最新文章

  1. GM Tech 2 works with Hummer Yes or No
  2. 《数学之美》第22章 自然语言处理的教父马库斯和他的优秀弟子们
  3. 用python画竹子_python函数
  4. Pytorch数据类型转换
  5. 目标检测数据集MSCOCO简介
  6. (转)FPGA的速度等级(speed grade)
  7. 向后转动作要领_跆拳道腿法之转身侧踢动作要领
  8. AWS机器学习初探(1):Comprehend - 自然语言处理服务
  9. Django ORM 单表操作
  10. 谷歌在招什么样的人?
  11. 身份管理提供商:Gigya和PingIdentity
  12. php mysql简单分页代码_用php制作简单分页(从数据库读取记录)的方法详解
  13. windows重装系统或者苹果重装系统
  14. unity自动生成敌人_unity 2d AI 敌人 自动追踪(2)
  15. word如何一次性删除所有批注
  16. 程序人生-哈工大计算机系统大作业2022春
  17. MSP430初学:MSP430单片机C语言基础(一)
  18. 信用卡如何使用?广发卡自动分期教你这样养卡技巧
  19. 湖南方言之王——湘乡话
  20. 加密文件的识别和破解工具,电子数据勘察取证实验室建设项目-掘密

热门文章

  1. 使用 Cilium 增强 Kubernetes 网络安全
  2. 腾讯云连续四年排名中国音视频解决市场第一,头部厂商中RTC增速第一
  3. 首提 Database Plus 新理念,SphereEx 获数百万美元天使融资,接棒 ShardingSphere 打造新型分布式生态
  4. VMware宣布完成27亿美元收购Pivotal;日本成功研发出6G芯片:单载波速度高达100Gbps;联想手机再换新掌门……...
  5. 2019年普通高等程序员招生统一考试
  6. 轻博客框架 php,DouPHP轻博客 v1.6 Release 20200925
  7. 2021计算机应用基础统考,2021年度计算机应用基础统考练习题及答案.doc
  8. mysql 加载数据校验_mysql 导入数据后的校验程序
  9. js json数据传递传递、json数据解析
  10. yarn全局安装vue/cli vue不是内部命令