最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉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('淘宝直通车验证通过!您当前以<'+parse['result']['nickName']+'>登陆')            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()

[url=http://raphael10241024.iteye.com/blog/2285333]Python实现的淘宝直通车数据抓取(1)[/url]
[url=http://raphael10241024.iteye.com/blog/2285364]Python实现的淘宝直通车数据抓取(2)[/url]
[url=http://raphael10241024.iteye.com/blog/2286091]Python实现的淘宝直通车数据抓取(3)[/url]
[url=http://raphael10241024.iteye.com/blog/2286092]Python实现的淘宝直通车数据抓取(4)[/url]

Python实现的淘宝直通车数据抓取(1)相关推荐

  1. Python实现的淘宝直通车数据抓取(3)

    商家那里给出的是一个有几千行的excel表,这里使用openpyxl来读取excel. class read_write: def __init__(self,token,cookiestr): se ...

  2. python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(2)

    再看我们要抓取的数据,网页是这样的: 这里是我们要抓取的数据: 打开chrome的调试工具发现数据是通过一个Ajax请求来获取的: 这样的话,获取数据就太简单了,因为完全不需要去解析html页面,只需 ...

  3. [Python爬虫] 三、数据抓取之Requests HTTP 库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...

  4. [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  5. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  6. python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)

    最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...

  7. 用python进行分布式网页数据抓取(一)——设计

    这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取. 从来没有用过python,这次来尝一下鲜,感觉还行~ BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来 ...

  8. 用Python实现全国二手房数据抓取+地图展示

    最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格. [建议先点赞.再收藏] 一.思路❤️ 想要获取链家全国二手房的信息,首先我们 ...

  9. python爬虫之app数据抓取_Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

    1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...

最新文章

  1. 104_鼠标事件对象
  2. Linux 内核安全模块学习总结
  3. 你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)
  4. 【PP主数据】工作中心介绍
  5. 四十一、ETL工具kettle输出步骤
  6. 远程办公从学习开始,潜伏在家,技术如何逆袭?
  7. python3从零开始学习_从零开始学习PYTHON3讲义(十五)让画面动起来
  8. 视觉控每天盯着桌面,少不了桌面手机壁纸图片,请收好
  9. 高项近5套选择题知识点思维导图
  10. 晓庄2019c语言真题卷,南京晓庄学院—C语言期末考试复习提纲
  11. android 文件加密源码
  12. 计算机图形学实验报告百度云盘,计算机图形学实验报告(一).doc
  13. 服务器虚拟cpu,服务器虚拟化 vcpu与内存配比
  14. 全网最详细教程(上):教你如何从0-1制作出一张可视化大屏
  15. 常见的导数公式和积分公式
  16. 的概念产生于计算机芯片,是指采用光导原位合成或微量点样等方法,,微阵列芯片...
  17. Ubuntu 安装 php8.1
  18. oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复
  19. 新手入门必读:一款手游的开发流程是怎样的?
  20. 解决问题:开启Wireshark之NPF驱动问题

热门文章

  1. 【计算机毕业设计】260火锅店管理系统
  2. iphone 密码输入错误_如何使用iPhone在Apple TV上输入密码
  3. win10 vscode搭建go语言开发环境
  4. java中string的一些不为人知的秘密
  5. 释放Windows为硬件保留内存,双系统安装释放法。
  6. APO算法挑战赛--赛鸭平台做的C++习题(持续更新)
  7. 华为OD机试真题 Java 实现【求解立方根】【牛客练习题】
  8. 和CSS相遇的第一天,想它!
  9. webbench 下载_Webbench的安装和使用
  10. C++:name hiding详解