Jingk 发表于 2020-3-18 19:29

low抖音爬取[面向对象]

本帖最后由 Jingk 于 2020-3-18 19:32 编辑

原作者@Zeaf   我改了下。。
源代码地址传送门


```
import tkinter as tk
from tkinter import END# 单独把这个申明是因为后面的往text控件插入内容会报错
import requests
import re
import time
import wget

class Douyin(object):
    """docstring for Womdows"""
    def __init__(self):
      self.tk=tk
      self.window = tk.Tk()
      self.show_text=tk.Text()
      self.var_token = tk.StringVar()

    def get_tar(self):
      token = self.var_token.get()
      time.sleep(0.5)# 停顿1s
      if token =='':
            return self.show_text.insert(END,'请输入一个地址\n')
      if token in 'v.douyin.com':
            pat = '(https://v.douyin.com/.*?/)'
            url = re.compile(pat).findall(share)# 正则匹配分享链接
      else:
            url=token
      headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36'
      }
      r = requests.get(url, headers=headers)
      pat = 'playAddr: "(.*?)",'
      name_ = '<p class="name nowrap">(.*?)</p>'
      info_ = '<p class="desc"(.*?)</p>'
      play = re.compile(pat).findall(r.text).replace("playwm", "play")#视频地址
      name_a = re.compile(name_).findall(r.text)#发布人作者
      info_a = re.compile(info_).findall(r.text).replace('>','')#发布详情
      headers = {
            'user-agent': 'Android',
      }
      r = requests.get(play, headers=headers, allow_redirects=False)
      geturl = r.headers['location']
      response = requests.get(geturl, headers=headers)
      # 写入文本
      self.show_text.insert(END, '获取到的链接:\n' + geturl +'\n下载中--{}{}'.format(name_a,info_a))
      wget.download(geturl, '{}{}.mp4'.format(name_a,info_a))
      return self.show_text.insert(END,'\n{} {}下载成功!'.format(name_a,info_a))

    class Windows:
      def __init__(self,tit_name,window_y_x):
            self.douyin = Douyin()
            self.douyin.window.title(tit_name)
            self.douyin.window.geometry(window_y_x)
      def Show_text(self,text,text_x,text_y,font=('华文行楷',16)):
            self.douyin.tk.Label(self.douyin.window, text=text,font=font).place(x=text_x, y=text_y)
      def Show_input_text(self,x,y):
            self.douyin.show_text.place(x=x,y=y)
      def Show_input(self,x,y):
            self.douyin.tk.Entry(self.douyin.window, textvariable=self.douyin.var_token).place(x=x, y=y)
      def Show_button(self,text,font,x,y):
             self.douyin.tk.Button(self.douyin.window,text=text, font=font, command=self.douyin.get_tar).place(x=x, y=y)
      def run(self):
            self.douyin.window.mainloop()
      def __del__(self):
            return print('程序结束')

if __name__ == '__main__':
    a=Douyin.Windows('抖音小视频','900x600')
    a.Show_text('抖音无水印在下',50,50,font=("华文行楷",30))
    a.Show_text('输入地址:',40,138,font=('华文行楷',20))
    a.Show_input_text(300,150)
    a.Show_input(160,150)
    a.Show_button('go',20,150,200)
    a.run()
```

huxian2020 发表于 2020-3-18 19:50

第三方接口 就不会了吗

poejie20200214 发表于 2020-3-18 19:58

感谢楼主分享

yangxiao 发表于 2020-3-18 20:03

谢谢分享

leisukeji 发表于 2020-3-18 20:19

爬什么?

对星空的承诺 发表于 2021-3-28 09:42

老大,“Spyshelter Firewall 10.6.1 安装包 + key” 给个天翼云或者百度的安装包呗?

Sias 发表于 2021-3-28 10:20

这个是去水印的?
页: [1]
查看完整版本: low抖音爬取[面向对象]