相关截图![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/775c4cfb444ae765cba3c73aa726ac5a.jpeg)
第一步: 下载pydroid 3 密码:pydroid
第二步:下载完整版仓库
仓库已打包成xapk文件(数据文件与安装包),所以需要xapk-install程序来安装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="
"