手机上Pydroid 3 4.01的安装 与 基于pyqt5界面的爬虫程序的运行

相关截图请添加图片描述

请添加图片描述
请添加图片描述
在这里插入图片描述

请添加图片描述
请添加图片描述

第一步: 下载pydroid 3 密码:pydroid

在这里插入图片描述
第二步:下载完整版仓库
在这里插入图片描述
仓库已打包成xapk文件(数据文件与安装包),所以需要xapk-install程序来安装xapk
xapk安装程序
由于本人找资源找得巨难受,并且进行了改安装包签名和打包xapk等操作,资源难得,请勿白嫖。

测试代码:七天的实训期间写的一个爬虫代码,具体看注释。
0.txt 文件与全网爬取.py文件放在同一个目录下,然后用pydroid运行全网爬取.py即可

# 全网爬取.py
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QGridLayout,QLineEdit,QTextBrowser,QLabel
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt
import sys
import requests
import re

'''
需要的模块
    python -m pip install requests pyquery pyqt5 
    手机端下载模块不要输前面的python -m
'''

''' 脚本规则 目前只有三个网址 规则
0.txt 一个网站需要六行数据
    1.网站主页地址
    2.网站搜索地址
    3.标题前缀
    4.标题后缀
    5.链接前缀
    6.连接后缀
    
    1.本程序运行在手机上时多线程有问题,所以改成了单线程,但由于dilidili8.com网站访问较慢,可能导致程序卡在那里,有必要的话需要删掉这个网站的搜索规则
    2.脚本规则:要是固定的网站爬取,一旦网站倒闭或者改了内容,那么程序基本废了,所以改成脚本的形式让运行者自行定义爬取规则,增强程序复用性
    仔细观察原有的规则文件,六行一个规则,有心肯定能看懂。
    3.规则解释

	第一行:网站主页,因为爬取的视频链接大多是相对路径,需要与主页地址拼接才能得到完整视频链接,所以需要主页链接
	第二行:网站搜索链接,一般来说只要向该网站搜索框输个内容,点击搜索,然后观察网址变化,最后复制网址去掉网址上搜索的字符串即可,特殊情况需要按f12抓包查看请求的键值对(涉及前端后端数据传递的内容,只会python的初学者需要自行了解)
	第三四行:是视频链接前后的两串html代码,程序会自动找出夹在这两个串中间的字符串作为视频链接
	第五六行:是视频名字前后的两段html代码,程序自动找出夹在这两个字符串之间的文字作为视频名称

	搜索出来的标题和链接都已由qt控件作超链接访问处理,直接点击链接即可访问。
'''


class Widget(QWidget):
    def __init__(self):
        super().__init__()
        self.ui_init()
        
	#界面编写
    def ui_init(self):
        self.layout = QGridLayout(self)
        self.label = QLabel('视频爬取',self)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setFont(QFont('楷体',24))
        self.move_name_edit = QLineEdit(self)
        self.move_name_edit.setFont(QFont('楷体',14))
        self.move_name_edit.setAlignment(Qt.AlignCenter)
        self.search_bt = QPushButton('搜索',self)
        self.search_bt.setFont(QFont('楷体',14))
        self.display_view = QTextBrowser(self)
        self.display_view.setFont(QFont('楷体',12))
        self.display_view.setOpenExternalLinks(True)
        self.search_bt.clicked.connect(self.bt_clicked_event)
        '''
        #布局,在电脑端运行请解除这段多行注释
        self.move_name_edit.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
        self.search_bt.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
        self.layout.addWidget(self.move_name_edit,0,0,1,2)
        self.layout.addWidget(self.search_bt,0,2)
        self.layout.addWidget(self.display_view,1,0,5,3)
        '''
        self.label.setGeometry(50, 50, 930, 100)
        self.move_name_edit.setGeometry(50, 200, 650, 120)
        self.search_bt.setGeometry(720, 200,300 , 120)
        self.display_view.setGeometry(50, 340, 970, 1500)
        self.setWindowTitle('动漫搜索')
        self.resize(930, 1100)
        self.show()

    #搜索按钮点击事件
    def bt_clicked_event(self):
        self.display_view.clear()
        #self.search_bt.setEnabled(False)
        with open('0.txt', 'r') as f:
            line = '1'
            while len(line) > 0:
                self.url = f.readline()
                self.search_url = f.readline()
                self.title_start = f.readline()
                self.title_end = f.readline()
                self.href_start = f.readline()
                self.href_end = f.readline()
                line = self.url
                if len(line) == 0:
                    return
                else:
                    self.search_move(self.move_name_edit.text(),self.url,self.search_url,self.title_start,self.title_end,self.href_start,self.href_end)

    def search_move(self,wd,url,search_url,title_start,title_end,href_start,href_end):
        try :
            r = requests.get(search_url[:-1]+wd)
        except ValueError:
            pass
        else:
            r.encoding = r.apparent_encoding
            reg = title_start[:-1]+r'(.*?)'+title_end[:-1]
            titles = re.findall(reg, r.text)
            reg = href_start[:-1]+r'(.*?)'+href_end[:-1]
            hrefs = re.findall(reg, r.text)
            if len(hrefs) > 0 and hrefs[0].find(url[:-1]) == -1:
                hrefs = [url[:-1]+x for x in hrefs]
            s = zip(titles, hrefs)
            for k, v in s:
                name = '<a style=\'text-decoration:none; color:red;\' href=\''+v+'\'>'+k+'</a>'
                a = '<a style=\'text-decoration:none;\' href=\''+v+'\'>'+v+'</a>'
                self.display_view.append(name)
                self.display_view.append(a)
        print(self.display_view.toHtml())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    W = Widget()
    sys.exit(app.exec_())


0.txt (保持末尾有空行)
http://www.bimiacg.com
http://www.bimiacg.com/vod/search?wd=
target="_blank">
</a><p title="
<div class="info"><a href="
"
http://www.dilidili8.com
http://www.dilidili8.com/public/api.php?app=video&do=search&q=
class="thumb lazy" alt="
"
<a class="thumbnail" href="
"
https://www.malimali.tv
https://www.malimali.tv/vodsearch/-------------.html?wd=
target="_blank" class="title">
</a>
<li class="search list"><a href="
"

gitee:具有简单规则定义的番剧爬虫程序

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值