前言
没有用任何的爬虫库,借用了pyqt5中的QWebEngineView。就只有用了pyqt5。
😛😛😛😛😛😛😛😛😛
正文
就来爬取经典的爬虫案例--豆瓣top250,就只爬第一页,意思意思一下。
import os
import re
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
import prettytable as pt
# 导包
class a(QWidget):
def __init__(self,url):
# 需要传入参数url
super().__init__()
self.bt = None
self.driver = None
self.initui(url)
# 垂直布局,一个QWebEngineView,一个按钮
# 有点像selenium 打开网页
def initui(self,url):
self.setWindowTitle('爬虫')
self.setGeometry(100,100,600,600)
h = QVBoxLayout(self)
self.driver=QWebEngineView(self)
self.driver.load(QUrl(url))
self.bt=QPushButton(self)
self.bt.setText('开始')
self.bt.setShortcut('o,k')
#按钮设置了快捷键 o,k
self.bt.clicked.connect(self.get_data)
h.addWidget(self.driver)
h.addWidget(self.bt)
self.setLayout(h)
# 得到数据,就只爬了名字,演员,最后的结语
def get_data(self):
title='''
function title()
{
var movie_name=document.querySelectorAll('div.hd > a > span:nth-child(1)');
var introduce=document.querySelectorAll('.bd>p:nth-child(1)');
var last_content=document.querySelectorAll('.bd>p>span');
var a=new Array();
var b=new Array();
var c=new Array();
var d=new Array();
for(var m of movie_name)
{
a.push(m.textContent);
}
for(var n of introduce)
{
b.push(n.textContent);
}
for(var k of last_content)
{
c.push(k.textContent);
}
d.push(a,b,c)
return d;
}
title();
'''
# js
self.driver.page().runJavaScript(title,self.title)
# 回调函数
def title(self,data):
table=self.table()
for i in range(25):
introduce=[j.replace('\n','').strip().replace(' ','') for j in data[1]]
table.add_row([data[0][i],introduce[i],data[2][i]])
print(table)
# prettable的展示
def table(self):
tb=pt.PrettyTable()
tb.field_names=['电影名','演员和类型','结语']
return tb
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create('Fusion'))
a = a('https://movie.douban.com/top250?start=0')
a.show()
sys.exit(app.exec_())
# 只爬第一页,url可以改
# 很简单
操作
运行开始
1,(图不能通过审核)。。。。
窗口大小可以自己改,随便设置。
点击ok,或者按o,k。
得到数据了
如图
2,(图不能通过审核)。。。。
可以点击第2页,再点ok,就可以得到第2页是数据。
总结
其实本质是js写的爬虫,又有selenium的感觉,但是用的却是pyqt5,没有用爬虫库,哈哈哈哈哈哈哈哈 ,给整不会了。
😆😆😆😆😆😆😆😆