当前位置:   article > 正文

termux 安装mysql 并运行b站爬虫入库 安卓11(手机上跑定时python爬虫)_怎么用termux爬取视频

怎么用termux爬取视频

运行环境

python3.9.6 +MariaDB(termux官方封装安装顺利)

1. 安装python

#安装python3
pkg install python -y
#查看版本
python -V
#升级pip
python -m pip install --upgrade pip -i
#安装简易爬虫需要的库
pip install pymysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. 安装MariaDB并在里面建表

#安装MariaDB
pkg install mariadb
#初始化数据库
mysql_install_db
#启动mysql服务(得到一个进程号(pid号),nohup: ignoring input and appending output to `nohup.out'提示也是正常的)
nohup mysqld &
#进入mysql(whoami为本机的登陆名)
mysql -u ${whoami}
#mysql内修改root密码,我这里习惯设置用户名密码都为root
use mysql;
set password for 'root'@'localhost' = password('root');

# 刷新权限
flush privileges;
# 创建数据库
create database bilidb;
use bilidb;
CREATE TABLE `hot` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `hotword` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `hotword` (`hotword`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1;
#退出mysql
quit;

#需要关闭mysql服务可以掉进程
kill -9 PID(这个pid号启动服务的时候回显示)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3. 运行python程序

#python +文件名 例子:
python bili.py
#bili.py要在当前目录下,安卓11有应用文件的限制,一加手机需要在设置的存储里找文件,在文件程序里面进行复制
  • 1
  • 2
  • 3

我这里有个简单的爬虫

#python程序
#字典
import requests
import json
import pymysql.cursors


#加头标识
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}

product=[]
#获取传回数据
resp=requests.get('https://s.search.bilibili.com/main/hotword?mid=&buvid=98E676EF-F586-403E-8440-52A6836FA68713451infoc&jsonp=jsonp&callback=jsonCallback_bili_58910703464582290',headers=headers)

rest=resp.text.replace('jsonCallback_bili_58910703464582290(','').replace(')','')
    #转换json键值对

json_data=json.loads(rest)

comments=json_data["list"]
#     #把想要的数据装入列表中
proDict=[]
for item in comments:
    proDict.append(item['keyword']+' ')
product.extend(proDict)

# 把数组里所有数据都转入字符串中(这里是学习用的,可以去除)
p=''.join(proDict)

print(p)


# 数据入库
# 连接数据库
conn = pymysql.connect(
          host='127.0.0.1',
          port=3306,
          user='root',
          passwd='root',
          db='bilidb',
          charset='utf8',
          cursorclass=pymysql.cursors.Cursor,
         )

cur=conn.cursor()
#这里用replace解决数据入库时重复数据的问题,注意hotword字段要设置唯一约束
for item in proDict:
        cur.execute("replace into hot(hotword) values('%s')" %(item))
#事务提交(这里尝试性的用了一个异常处理,嘿嘿可以去掉)
try:      
    conn.commit()
except AttributeError:
    print("错误")
cur.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

保存或者直接复制运行,ok运行成功请添加图片描述

4、在termux模拟器中加入定时任务,每分钟爬一次入库

#安装crontab
pkg install crontab
#启动服务
crond
#编辑定时任务
crontab -e
#输入定时任务
* * * * * python bili.py >>123.log
星号分别表示 分 时 天 月份 周 可以指定时间运行,若为星号就代表每分或每周或每时...运行,我这里是每分钟运行一次,若要每天则要确定具体时间即 0 8 * * * 这就表示每天8点运行(后面具体复杂操作见https://www.runoob.com/linux/linux-comm-crontab.html)
然后后面就是指令了,***注意的是后面必须要指定一个log文件***,不然它不会运行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

最后查询数据库内值,确实在不断加数据
请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/228217
推荐阅读
相关标签
  

闽ICP备14008679号