只用pyqt5写爬虫

前言

没有用任何的爬虫库,借用了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,没有用爬虫库,哈哈哈哈哈哈哈哈 ,给整不会了。

😆😆😆😆😆😆😆😆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
当使用PyQt5编爬虫代码时,您可以使用Python的标准库和第三方库来进行网络请求和数据处理。以下是一个简单的示例代码,演示了如何使用PyQt5编一个简单的爬虫: ```python import sys from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication from PyQt5.QtWebEngineWidgets import QWebEngineView from PyQt5.QtWebEngineCore import QWebEngineHttpRequest class WebPage(QWebEngineView): def __init__(self): super().__init__() self.loadFinished.connect(self.onLoadFinished) def start(self, url): self.load(QUrl(url)) def onLoadFinished(self): # 页面加载完成后的处理逻辑 html = self.page().toHtml() # 在这里可以对HTML进行解析和提取数据的操作 print(html) if __name__ == '__main__': app = QApplication(sys.argv) webPage = WebPage() webPage.start('https://www.example.com') # 替换为您要爬取的网址 sys.exit(app.exec_()) ``` 这个示例代码使用了`QWebEngineView`来加载网页,并在页面加载完成后获取了HTML内容。您可以在`onLoadFinished`方法中进行解析和提取数据的操作。请注意,这只是一个简单的示例,实际的爬虫代码可能需要更复杂的逻辑和数据处理。 此外,还可以使用Python的第三方库,如`requests`和`BeautifulSoup`来进行网络请求和HTML解析。PyQt5主要用于GUI开发,而不是专门用于爬虫,因此根据您的具体需求,您可能需要使用其他专门的爬虫库来进行更高级的爬虫操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值