Python实现的淘宝直通车数据抓取(1)
最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉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)相关推荐
- Python实现的淘宝直通车数据抓取(3)
商家那里给出的是一个有几千行的excel表,这里使用openpyxl来读取excel. class read_write: def __init__(self,token,cookiestr): se ...
- python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(2)
再看我们要抓取的数据,网页是这样的: 这里是我们要抓取的数据: 打开chrome的调试工具发现数据是通过一个Ajax请求来获取的: 这样的话,获取数据就太简单了,因为完全不需要去解析html页面,只需 ...
- [Python爬虫] 三、数据抓取之Requests HTTP 库
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...
- [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
- python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)
最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...
- 用python进行分布式网页数据抓取(一)——设计
这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取. 从来没有用过python,这次来尝一下鲜,感觉还行~ BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来 ...
- 用Python实现全国二手房数据抓取+地图展示
最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格. [建议先点赞.再收藏] 一.思路❤️ 想要获取链家全国二手房的信息,首先我们 ...
- python爬虫之app数据抓取_Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...
最新文章
- 104_鼠标事件对象
- Linux 内核安全模块学习总结
- 你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)
- 【PP主数据】工作中心介绍
- 四十一、ETL工具kettle输出步骤
- 远程办公从学习开始,潜伏在家,技术如何逆袭?
- python3从零开始学习_从零开始学习PYTHON3讲义(十五)让画面动起来
- 视觉控每天盯着桌面,少不了桌面手机壁纸图片,请收好
- 高项近5套选择题知识点思维导图
- 晓庄2019c语言真题卷,南京晓庄学院—C语言期末考试复习提纲
- android 文件加密源码
- 计算机图形学实验报告百度云盘,计算机图形学实验报告(一).doc
- 服务器虚拟cpu,服务器虚拟化 vcpu与内存配比
- 全网最详细教程(上):教你如何从0-1制作出一张可视化大屏
- 常见的导数公式和积分公式
- 的概念产生于计算机芯片,是指采用光导原位合成或微量点样等方法,,微阵列芯片...
- Ubuntu 安装 php8.1
- oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复
- 新手入门必读:一款手游的开发流程是怎样的?
- 解决问题:开启Wireshark之NPF驱动问题