作者:菜牛 | 来源:互联网 | 2023-09-13 13:24
文章目录前言一、mitmdump配置二、登陆淘宝三、解析数据总结前言众所周知淘宝的反爬机制是越来越严格,如果用单纯的用selenium登录淘宝会出现万恶的滑块验证&
文章目录
- 前言
- 一、mitmdump配置
- 二、登陆淘宝
- 三、解析数据
- 总结
前言
众所周知淘宝的反爬机制是越来越严格,如果用单纯的用selenium登录淘宝会出现万恶的滑块验证,这是因为淘宝检测出你是selenium,下面用mitmdump中间拦截修改伪装的方式“骗过”淘宝顺利登录爬取
先说明一下,mitmdump拦截有没有用,如果过从查看window.navigator.webdriver角度老说他还是True并没有改变,但是我用他确确实实顺利的爬到了数据 我用30页测试很顺利并没有出现异常,但是我尝试没有用mitmdump拦截时爬到十页就给我出滑块了,所以 这篇文章可以参考一下
提示:以下是本篇文章正文内容,下面案例可供参考
一、mitmdump配置
写一个HttpProxy文件
参考于:https://www.jianshu.com/p/368be2cc6ca1
代码如下(示例):
TARGET_URL = 'https://g.alicdn.com/secdev/sufei_data/3.6.8/index.js'
INJECT_TEXT = 'Object.defineProperties(navigator,{webdriver:{get:() => false}});'def response(flow):if flow.request.url.startswith(TARGET_URL):flow.response.text = INJECT_TEXT + flow.response.textif 'um.js' in flow.request.url or '115.js' in flow.request.url:print(flow.response.text)flow.response.text = flow.response.text + 'Object.defineProperties(navigator,{webdriver:{get:() => false}})'
二、登陆淘宝
选用扫码登录,看到登录界面后,点击扫码登录,手机扫码进行登录
代码如下(示例):
def get_url(key):bro.maximize_window() #最大化浏览器bro.get("https://s.taobao.com/search?q=%s&s=1" % (key)) #访问页面print("*"*30+"扫码登录"+"*"*30)sleep(40) #扫码登录等待时间#定位一共有多少页numb=bro.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text page=int(re.findall('(\d+)',numb)[0]) #用正则提取出来print("*"*30+"共%s页数据"%(page)+"*"*30)#根据页数来做循环for i in range(page):print("-" * 30)print("正在获取第%d页数据"%(i+1))bro.get("https://s.taobao.com/search?q=%s&s=%d"%(key,i*44))parser_product() #解析数据函数
三、解析数据
代码如下(示例):
def parser_product():text=bro.page_sourcehtml=etree.HTML(text)divs=html.xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div')for div in divs:dic={}dic["title"]=div.xpath('.//img[@class="J_ItemPic img"]/@alt')[0]dic["price"]=div.xpath('.//div[@class="price g_price g_price-highlight"]/strong/text()')[0]dic["payers"]=div.xpath('.//div[@class="deal-cnt"]/text()')[0]with open(".//taobao.csv", "a+", encoding="utf-8") as f:writer = csv.DictWriter(f, dic.keys())writer.writerow(dic)
总结
使用流程:
1.cmd进入当前文件夹 调用 mitmdump -s HttpProxy.py -p 9000
2.运行python程序
3.打开手淘,扫码登录
注意事项:
1.别爬的太频繁
2.有需求,建议分批次爬取
参考文章:https://www.jianshu.com/p/368be2cc6ca1
文章请转载标明出处
完整代码 请关注公众号“阿虚学Python”回复“淘宝”获取,更多有趣的爬虫项目等你来
如果觉得这篇文章不错、或者对你有帮助的话就请点个赞吧,谢谢大家的观看