利用Python在码上淘在线转换淘宝链接

淘宝旗下的码上淘,说实话具体干啥我也不懂,总结起来还是为了线下推广。

朋友在做淘宝,有转码的需求。之前他一直是手动的一条链接,一条链接的做转换,工作量很大,很浪费时间。于是需要一个工具来解决这个问题,刚好我最近也是在熟悉Python语言,这个用Python的selenium库实现起来并不难。

更我上一个博客中用到的东西一样,同样是eclipse下搭建的Python开发环境,并没用用到pycharm。先直接上代码:

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re
from selenium.webdriver.common.action_chains import ActionChains
import urllib
import requests
import zxing
#from win32com.client import Dispatch  thunder

chrome_driver='chromedriver.exe'
driver = webdriver.Chrome(executable_path= chrome_driver)
#driver.implicitly_wait(10)

wait=WebDriverWait(driver, 10)

driver.get(url="https://ma.taobao.com/")

def ocr_zxing(filename):
    zx = zxing.BarCodeReader()
    zxdata = zx.decode(filename)
    print(filename + ":" + zxdata.parsed)

def downloadfile(str):    
    "转换特定链接"
    driver.get(url="https://ma.taobao.com/web/create_by_url.htm")
    urlle = driver.find_element_by_id('inputUrl')
    urlle.clear()
    urlle.send_keys(str)

    try:
        submit= wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#form-url > div:nth-child(4) > div > button')))
        submit.click()
    except:                        
        print("cant find btnnext")
    
    sleep(3)
    lename = driver.find_element_by_id("inputName")
    lename.clear()
    lename.send_keys("测试题目")
    driver.find_element_by_xpath("/html/body/section/section/article/form/div/div/div[3]/div[2]/div/button").click()
    sleep(1)
#     driver.find_element_by_xpath("/html/body/section/section/article/div/div[1]/div[2]/div[2]/div[3]/div/div[1]/div[2]/a[1]").click()
#     input("下载后请输入  1 ")

    img_url = ''
    findsrc = True

    try:
        img_url = driver.find_element_by_css_selector("body > section > section > article > div > div.data-content.clearfix.step-three > div.success-view > div.sui-form.form-horizontal.pull-left.page-content > div.control-group.mt25 > div > div:nth-child(1) > span > img").get_attribute("src")                                
    except:   
        findsrc = False
        print("cant find btnnext")
        # 保存图片到指定路径  
    if img_url != None and findsrc :
            #保存图片数据  
        data = requests.get(img_url)
        fileurl = str.split('=')[1] + ".png"
        with open(fileurl, 'wb') as f:
            f.write(data.content)  
        ocr_zxing(fileurl)

        
urlstr = ''

while (input("请手动登录,登录完成后请输入  1 ") != '1'):
    sleep(2)
    urlstr = input("请输入要转换的链接,退出直接输入\'exit\'")
while (urlstr != 'exit') :
    urlstr = input("请输入要转换的链接,退出直接输入\'exit\'")
    downloadfile(urlstr)

功能其实也是很简单,就是借用chromedriver.exe调起chrome浏览器,打开
https://ma.taobao.com/ (码上淘的登录界面)。这里就有一个小插曲,因为淘宝做了相应的措施,防止类似的脚本登录,所以有“滑动登录”限制,开始我尝试自己写脚本去实现这个滑动效果,但是多次尝试均失败告终,于是乎放弃,还是有点自知之明的,阿里大神不是我这等门外汉能挑战的。

但是呢,但是我有取巧的办法。就是我不用自动登录,我用手动登录,注意这个手动登录不是简单的手动登录,因为默认情况下这个网站是在测试模式下手动也登陆不来的,不相信的可以测试一下。效果如下图

会直接报错,这个我解决不了。下面注意见证奇迹的时候到了:

这里我的小技巧就是我手动打开一个标签也,扫描登录淘宝,然后刷新码上淘的界面,就可以进入了。(这里是因为我的水平有限才来这一出,按理说保存cookie可以实现登录,我门外汉,不懂 也没有测试。大神可以指导一下)

进入之后在程序的运行界面输入1,开始正式进入转链。

这个时候就哟意思的事情来了,因为我这个只是给朋友做的小工具没有做到很完善,所有调试的时候还有很多细节问题需要解决。win10 下将二维码转换为链接的库运行出错,这个没解决。还有就是因为可以实现读取文件,保存文件的方式自动处理,而不是手动粘贴。

这里还有个小细节,就是在编译器调试的时候,默认是智能复制一条,要是复制多条也会只是识别一条,但是打包成exe后再命令行下可以直接复制多行这个就很方便,也就是够用了。效果类似这样

水平有限,有愿意指导的大神可以直接联系QQ:371359001

使用Python抓取评书网站的小说评书

听评书这种东西真的是上瘾!开始只是上下班路上听,后来在单位上班,也习惯带着耳机听,这样可以屏蔽掉外界的干扰,干活的效率相对要高一些。

最近更是上瘾了,听一个小说,用的是app在线听的,但是现在的app啥都想要开一个VIP,简直了。。。穷人呢总有自己的路子,于是我就想着自己电脑下载好,然后在传到手机里。这里就要说一下现在的评书网站,有的也是需要vip,有的就是乱七八糟的投各种垃圾广告,只能说体验极差。

回想两年前也是做过类似的是,当时就是用一个Excel文件,手动找到规律,然后依赖Excel的编辑填充功能去实现一些网址的整理,然后再统一建立迅雷批量任务下载。但是这个方法在现在已经行不通了。现在的网站的下载放盗链手段还是比较多的,需要网页的交互,链接也有时间限制,原来的方法显然已经行不通了。于是只有另辟蹊径了。

这里我就把眼光放到了Python上了,虽然我个人会的语言是cpp,但是太笨重了,做这种不太合适,虽然我确信可以实现,但是没必要。期间也咨询请教了好几个大牛,但是可能是我语文表达能力不行,大牛只表示了爱莫能助,所以我只能自己动手,丰衣足食了。首先我们先看看迅雷下载界面(这个后加的25是因为脚本运行过程中我在忙别的事,热点切入到了脚本调用的浏览器中,误操作导致漏了一回,后来手动给补上)

这些都很容易实现,我一个没用过Python的几个小时的百度成本加分析成本就写了一个小脚本模板,已经可以正常解析一个网站的链接了。

from selenium import webdriver
from time import sleep
from win32com.client import Dispatch

chrome_driver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
driver = webdriver.Chrome(executable_path= chrome_driver)
driver.implicitly_wait(5)
file1 = open('links.txt', 'a')

#替换这里
l = range(43521,43563)
serialName = "G:\\迅雷下载\\评书\\白鹿原"
####
for x in l:
driver.get(url="http://www.pingshu8.com/down_%s.html" %x)
titliename = driver.title
driver.find_element_by_id('clickina').click()
sleep(2)
allHandles = driver.window_handles;
driver.switch_to.window(allHandles[len(allHandles)-1])
print(allHandles)
print(titliename)
addstr = driver.current_url
thunder = Dispatch('ThunderAgent.Agent.1')
thunder.AddTask(addstr, titliename, serialName)
thunder.CommitTasks()
print(addstr)
file1.write(addstr)
file1.write('n')
m = range(1, len(allHandles) - 1)

for y in m:
print(allHandles[y])
driver.switch_to.window(allHandles[y])
sleep(2)
driver.close()
driver.switch_to.window(allHandles[0])
print("close")
file1.close

懂的人自然懂了,不懂的就交vip挺好。感兴趣的可以搭一个Python开发环境,把上面的一段复制上去看看运行的结果是什么样的,这里还有几个小技巧我没有明确点出来,但是都应该是能百度到真确的答案的。说实话,百度真的挺好的,不但能找到合适的答案,还练就了我一双火眼金睛。谷歌不行,一般第一条就是你想要的,其他的都索然无味,好无趣。

我是用eclipse开发的,以前没有用过。我是说eclipse和Python都没有用过。开发的界面如下:

运行起来以后是这样,注意会提示:“Chrome 正受到自动测试软件的控制”

自己动手之首饰的维修

我喜欢自己动手干一些维修活路,所以总能找个理由置办各种千奇百怪的工具。今天就用到了一个一般人是用不到的工具。先亮家伙:

这个东西叫喷火枪,是个很实用的东西。(我觉得就是一个防风打火机的大点的版本,工作时间也可以稍微长点)

再介绍一下我今天要修的东西(修好之前没有把握能修好,就忘了拍照片,自行脑补)

一条金链子!说到修这个,那总有个坏的原因,那锅还是家里的小朋友背,跟我没关系。

而且这还有一个小插曲,之前确实在外边修过两次,第一是个小伙子,给我拆了两环,结果要熔到扣的时候,没把握好,被喷灯的风给吹走了,小伙子弄了个大红脸,又是拿扫帚扫,又是抖落衣服,就差要给我赔钱了,我和媳妇看那个窘迫,赶紧说不用找了,不要了。结果修完了我们给钱人家死活不要。这是第一次,没几天又断了,还是手艺不行啊 。。。。第二次,是找个号称专业的大门店去修的,也好像没顶用,一段时间下来又开了,这个也就是我 的机会了。

好的,核心的工具喷枪是有了,镊子也自不用说,我这里多的是。唯一尴尬的是我这里没有东西能够承受高温,我没有耐火材料。就在我快要放弃的时候,突然考到了一个东西(这个图也是修好之后后补的)

注意看里面的小石头,这个就是个最合适的耐火材料啊

于是开火:

中间的操作就很简单了,只需要找好位置和角度,把握好时间,用镊子扶着点,一切都水到渠成了。

最终结果却是是修好了,但是就是有一个缺陷,有一个大疙瘩。。。。这个某该

其实,话说回来,这个并不是我第一次用这种方法维修了。在很早很早以前,大概我初中时候暑假捉蝎子,用的是这种矿灯。

结果有一次把灯放到三轮上的时候,给磕坏了,给外壳上搞了一个洞,当时觉得是很大的事,又没钱自己买新的灯,我就自己想了了一个自己现在都佩服自己的办法,我用用完油的圆珠笔芯当做吹筒,蜡烛当做火源,随便捡的什么塑料零件当补丁,用嘴噙着圆柱笔芯吹蜡烛,用火苗去烧补丁和灯坏的地方,结果竟然真的修好了。。。。可能我真的有当小炉匠的天赋吧…

就看看下次啥时候能用到喷枪了,话说,电动车的很多塑料件是是阻燃的,是不能用喷枪焊接的。不要问我怎么知道的