自制简易网络爬虫器01---爬取页面图片

导入一些必要的模块

import urllib.request
import gevent
from gevent import monkey
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import * 
import random
  1. urllib.request用来获取该图片在网页上的链接
  2. gevent是用来实现该程序多任务必要的模块
  3. gevent import monkey 是用来给gevent打补丁
  4. PyQt5是设置这个简易器的外观

给gevent打补丁

monkey.patch_all()

将整段代码放在一个类里,方便程序运行,增加可读性

1.用PyQt5设置外观


```python
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()

        self.InitUi()
        
    def InitUi(self):
        
        #设置控件的属性
        
        #绘制描述
        self.label_1=QLabel("请输入你要下载图片的地址:")
        self.text_1=QLineEdit()
        self.btn_1=QPushButton("下载")
        #设置布局
        hbox=QHBoxLayout()#水平盒子布局
        hbox2=QHBoxLayout()
        hbox3=QHBoxLayout()
        vbox = QVBoxLayout()
        grid=QGridLayout()#以方格的形式管理窗口
        grid.addWidget(self.label_1,1,0)
        grid.addWidget(self.text_1,1,1)
        grid.addWidget(self.btn_1,1,2)
        vbox.addLayout(hbox)
        vbox.addLayout(hbox2)
        vbox.addLayout(hbox2)
        vbox.addLayout(grid)
        #应用窗口布局
        self.setLayout(vbox)
        #绘制总体框架
        self.setGeometry(700,400,500,100)
        self.setWindowTitle("图片下载器")
        self.setFixedWidth(500)
        self.setFixedHeight(100)
        self.show()
        
        self.btn_1.clicked.connect(self.download)
        

其中 self.btn_1.clicked.connect(self.download)是鼠标点击后面的下载按钮会调用后面的下载函数

2.用随机数给下载到的图片命名,并将程序设置为多任务,并发处理


```python
def download(self):
        urladdr=self.text_1.text()
        num=random.randint(0,10000)
        gevent.joinall([
            gevent.spawn(self.downloader,str(num)+".jpg",urladdr)
        ])

其中urladdr=self.text_1.text()是将使用者在文本框内输入的图片地址赋给一个变量

3.(核心)下载图片

def downloader(self,img_name,img_url):
        req=urllib.request.urlopen(img_url)
        img_content=req.read()
        with open(img_name,"wb")as f:
             f.write(img_content)
        self.text_1.clear()


self.text_1.clear():每次下载成功 后会清空文本框

4.完整代码

import urllib.request
import gevent
from gevent import monkey
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import * 
import random

monkey.patch_all()

class App(QWidget):
    def __init__(self):
        super(App, self).__init__()

        self.InitUi()
        
    def InitUi(self):
        
        #设置控件的属性
        
        #绘制描述
        self.label_1=QLabel("请输入你要下载图片的地址:")
        self.text_1=QLineEdit()
        self.btn_1=QPushButton("下载")
        #设置布局
        hbox=QHBoxLayout()#水平盒子布局
        hbox2=QHBoxLayout()
        hbox3=QHBoxLayout()
        vbox = QVBoxLayout()
        grid=QGridLayout()#以方格的形式管理窗口
        grid.addWidget(self.label_1,1,0)
        grid.addWidget(self.text_1,1,1)
        grid.addWidget(self.btn_1,1,2)
        vbox.addLayout(hbox)
        vbox.addLayout(hbox2)
        vbox.addLayout(hbox2)
        vbox.addLayout(grid)
        #应用窗口布局
        self.setLayout(vbox)
        #绘制总体框架
        self.setGeometry(700,400,500,100)
        self.setWindowTitle("图片下载器")
        self.setFixedWidth(500)
        self.setFixedHeight(100)
        self.show()
        
        self.btn_1.clicked.connect(self.download)
        
   
    #执行爬虫    
    def downloader(self,img_name,img_url):
        req=urllib.request.urlopen(img_url)
        img_content=req.read()
        with open(img_name,"wb")as f:
             f.write(img_content)
        self.text_1.clear()
             
    #创建爬虫         
    def download(self):
        urladdr=self.text_1.text()
        num=random.randint(0,10000)
        gevent.joinall([
            gevent.spawn(self.downloader,str(num)+".jpg",urladdr)
        ])
        
      
        

if __name__ == '__main__':
    app=QApplication(sys.argv)
    pp=App()
    sys.exit(app.exec_())
     
	  
	    

5.效果图

自制简易网络爬虫器01---爬取页面图片_第1张图片
在文本框内复制图片链接即可

使用方式

1.复制要下载的图片链接,一般是在网页鼠标右键点击图片,选择复制图片地址
2.将复制到的图片地址粘贴在文本框内
自制简易网络爬虫器01---爬取页面图片_第2张图片
3.会将图片下载到该py文件所在的文件夹里,并以随机数命名
在这里插入图片描述

新人博主,望各位大佬指出不足之处!

你可能感兴趣的:(python)