博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Stage6--Python简单爬虫
阅读量:5878 次
发布时间:2019-06-19

本文共 3597 字,大约阅读时间需要 11 分钟。

正则表达式简单介绍

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

字符 [a-z]

数字 [0-9] 或 \b

* 匹配前面的子表达式零次或多次

+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次

一个简单爬虫例子

import reimport urllib.requesturl = "http://mall.csdn.net/coin"savePath = "G:/QQData/"def getHtml(url):    page = urllib.request.urlopen(url)    html = page.read().decode('utf-8')    return htmldef getImg(html):    reg = r'http:\/\/img.bss.csdn.net\/[0-9]+\.jpg'    imgre = re.compile(reg)    imglist = re.findall(imgre, html)    return imglist;def saveImg(url):    conn = urllib.request.urlopen(url)    file = open(savePath + getFileName(url), 'wb')    file.write(conn.read())    file.close()    returndef getFileName(url):    reg = r'[a-z0-9]+\.jpg'    matchObj = re.search(reg, url)    if matchObj:        return matchObj.group()    returnhtml = str(getHtml(url));imgurls = getImg(html);for imgurl in imgurls:    print(imgurl)    saveImg(imgurl)

这个例子很简单,里面的正则简单的到没有,是爬取CSDN U币商城的图片,很容易看懂。

可以自定义正则和Url的爬虫

from tkinter import *import reimport urllib.requestsavePath = "G:/QQData/"class ControllPanel(Frame):    default_url = "http://www.xingyongshe.com/man/ddfeijibei"    default_regix = r' 0:            self.setStatus("有%d张图片可以爬取", len(imgurls))        for imgurl in imgurls:            print(imgurl)        return imgurls    def startRun(self):        imgurls = self.verifyRegix()        runfunction = RunFunction(None, None)        size = runfunction.runTask(imgurls)        self.setStatus("爬取了%d张图片放在了" + savePath, size)    def add_statusbar(self):        statusBarFrame = Frame(self.master)        statusBarFrame.pack(side=BOTTOM, fill=X)        self.status_label = Label(statusBarFrame, bd=1, relief=SUNKEN, anchor=W)        self.status_label.pack(fill=X)    def setStatus(self, format, *args):        if self.status_label == None:            return        self.status_label.config(text=format % args)        self.status_label.update_idletasks()        return    def clearStatus(self):        self.status_label.config(text="")        self.status_label.update_idletasks()class RunFunction:    def __init__(self, url, regix):        self.url = url        self.regix = regix    def getHtml(self, url):        page = urllib.request.urlopen(url)        html = page.read().decode('utf-8')        return html    def getImg(self, html, reg):        imgre = re.compile(reg)        imglist = re.findall(imgre, html)        return imglist;    def saveImg(self, url):        conn = urllib.request.urlopen(url)        file = open(savePath + self.getFileName(url), 'wb')        file.write(conn.read())        file.close()        return    def getFileName(self, url):        reg = r'[a-z0-9]+\.jpg'        matchObj = re.search(reg, url)        if matchObj:            return matchObj.group()        return    def verifyRegix(self):        html = str(self.getHtml(self.url))        imgurls = self.getImg(html, self.regix)        return imgurls    def runTask(self):        imgurls = self.verifyRegix(self.url, self.regix)        for imgurl in imgurls:            self.saveImg(imgurl)        return len(imgurls)    def runTask(self, imgurls):        for imgurl in imgurls:            self.saveImg(imgurl)        return len(imgurls)root = Tk()root.title("爬虫管理窗口")#让窗口居中显示scnWidth, scnHeight = root.maxsize()tmpcnf = '%dx%d+%d+%d'%(308, 101, (scnWidth-308)/2, (scnHeight-101)/2)root.geometry(tmpcnf)root.maxsize(600, 300)root.minsize(360, 220)#root.resizable(False, False) #让窗口尺寸不变controllPanel = ControllPanel(root)controllPanel.setStatus("等待爬取……")root.mainloop()root.destroy()

这里写图片描述

转载于:https://www.cnblogs.com/lanzhi/p/6468422.html

你可能感兴趣的文章
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>
java面向对象高级分层实例_实体类
查看>>
android aapt 用法 -- ApkReader
查看>>
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
Android -- AudioPlayer
查看>>
Python大数据依赖包安装
查看>>
Android View.onMeasure方法的理解
查看>>
Node.js 爬虫初探
查看>>
ABP理论学习之仓储
查看>>
NestJS 脑图
查看>>
我的友情链接
查看>>
Html body的滚动条禁止与启用
查看>>
Tengine新增nginx upstream模块的使用
查看>>
多媒体工具Mediainfo
查看>>
1-小程序
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
Mind_Manager_2
查看>>
手动升级 Confluence - 规划你的升级
查看>>