分享一份四百行的Python代码给你!可直接运行哦!企业级项目爬虫

分享一份四百行的Python代码给你!可直接运行哦!企业级项目爬虫,第1张

概述__author__=\"PSM\"\'\'\'用于记录暂时的错误,以便查看\'\'\'importhttp.clientimporturllib.request
__author__ ="PSM"'''用于记录暂时的错误,以便查看'''import http.clIEntimport urllib.requestimport reimport osimport linecacheprint("             *************************************************************************")print("             请输入任何即可开始开始")print("             可根据提示找到下载位置")print("     recode.txt为系统记录文件,切勿手动删除,如果文件太大,您可以删除掉除了最后一行的所有内容")print("     recode.txt删除后,程序会从头开始")print("             *************************************************************************")input("         请输入任意内容:")siteUrl = 'http://www.mmonly.cc' #网页主地址siteUrl1 = 'http://t1.mmonly.cc'siteUrl_tag = 'http://www.mmonly.cc/tag' #标签页的地址Url1_404 = siteUrl1.replace("http://","")#检测404用的测试网站patNumN = "n=(d*)"patNumM = 'm=(d*)'patNumE = 'e=(d*)'patNumR = 'r=(d*)'patNumQ = 'q=(d*)'patNumW = 'w=(d*)'patNumT = 't=(d*)'patTagTarget = ''#获取标签地址后缀和名称patTheme = ''#每个标签内的每个主题地址和名称patTpage = "末页"#主题页末页的后缀,用来获取主题最后一页的数字patTpageNum = "/tag/(.*?)/(d*).HTML' target='_self'>"#获取主题数的页数patimg = "href='(.*?)'>查看原图"#获取主题内图片地址用于下载patimgPage ='(.*?)'#获取主题图片的总页数,用于翻页tagUrl_data = urllib.request.urlopen(siteUrl_tag).read().decode('gbk') #读取标签页的源代码tagUrl_data_target_result = re.compile(patTagTarget).findall(tagUrl_data)#爬出来标签名称和地址后缀pathFir = "F:imgSpIDer"pathFirIsExists = os.path.exists(pathFir)if not pathFirIsExists: os.mkdir(pathFir)else: passfile_recode1 = open(r"F:imgSpIDerecode.txt","a",enCoding="utf-8")file_recode1.close()print("已创建出recode.txt文件夹,用于记录和读取")print("请勿手动删除")file_recode2 = open(r"F:imgSpIDerecode.txt","rU",enCoding="utf-8")#写入用于记录断点位置的txt文件file_recode_result = file_recode2.readlines() #将文件中的数值分为一行一行的读取file_recode2.seek(0)file_recode2.close()file_recode_count = len(file_recode_result) #读取记录文件中的行数,用于后面的判定# print(file_recode.readlines(file_recode_count))if file_recode_count == 0: n = 0 # 表示标签列表的循环 m = 1 # 表示标签的循环 q = 0 # 表示主题页中页数的循环 w = 2 # 表示主题页第一页的循环 e = 2 # 表示图片页中的页数的循环 r = 2 # 表示后几页主题的图片页数的循环 t = 0else: recodeData = linecache.getline(r"F:imgSpIDerecode.txt",file_recode_count) # print(recodeData) n = re.compile(patNumN).findall(recodeData) # print(n1) m = re.compile(patNumM).findall(recodeData) # print(m1) q = re.compile(patNumQ).findall(recodeData) w = re.compile(patNumW).findall(recodeData) e = re.compile(patNumE).findall(recodeData) r = re.compile(patNumR).findall(recodeData) t = re.compile(patNumT).findall(recodeData) if bool(n) is True and bool(m) is True and bool(e) is True and bool(r) is True: n = n[0] m = m[0] e = e[0] r = r[0] q = [] w = 2 t = 0 elif bool(n) is True and bool(w) is True and bool(q) is True: n = n[0] q = q[0] w = w[0] m = 1 e = 2 r = 2 t = 0 elif bool(n) is True and bool(t) is True and bool(w) is True: n = n[0] t = t[0] w = w[0] m = 1 e = 2 r = 2 q = 0n = int(n)#标签的切换,第一个循环 n =0# print(w1)while n< len(tagUrl_data_target_result): tagname = tagUrl_data_target_result[n][1]#标签的名称 tagUrlPart = tagUrl_data_target_result[n][0]#标签网址的后缀 pathTag = "F:\imgSpIDer\%s"%tagname#标签路径 pathTagIsExists = os.path.exists(pathTag) if not pathTagIsExists:#创建标签文件夹在本地 print("检测到您的文件夹内没有[{}]这个文件夹,已帮您成功创建!!".format(str(tagname))) os.mkdir(pathTag) else: print("检测到[{}]这个文件夹已经创建!已自动进入这个文件夹".format(str(tagname))) tagUrl = siteUrl + tagUrlPart#每个标签的网址,又是第一页主题页的网址 tagUrlData = urllib.request.urlopen(tagUrl).read().decode("gbk")#每个标签的源代码,或者第一页主题页的源代码 themeRe_num = re.compile(patTpageNum).findall(tagUrlData)#主题页数,用于判定主题页是否是1 m = int(m) # print(m) if m  int(inthemePage): w = 2 else: w = int(w) else: print("[{}]主题的第[1]页未发现可下载内容,已自动进入下一主题".format(str(themename))) q =int(q) +1 if int(q) > len(themeRe) : q = 0 else: q = int(q) else: '''上面第一页搞定了,现在来搞定第n页的图片抓取''' while int(m) < len(themePage):#循环主题页数 m = 1与上面m相同,上面用于判定,这里用于循环。 #先获取后面页数的主题的地址,好用于获取源代码 themeNextUrl = tagUrl + "/%s.HTML"%int(m+1)#从第二页主题页开始 # print(themeNextUrl) themeNextData = urllib.request.urlopen(themeNextUrl).read().decode("gbk")#第二页主题开始的源代码 themeNextRe = re.compile(pattheme).findall(themeNextData)#第二页开始的主题地址和名称 while int(e)< len(themeNextRe):#循环主题数e = 0 themeNextname = themeNextRe[int(e)][1].replace("","")#第二页开始的主题名 inthemeNextUrl = themeNextRe[int(e)][0]#第二页开始的主题链接地址也是第一页图片地址 themePathNext = "F:\imgSpIDer\{}\{}".format(str(tagname),str(themeNextname))#第二页开始的主题本地路径 themePathNextIE = os.path.exists(themePathNext) if not themePathNextIE: print("检测到您电脑上没有[{}]文件夹,已自动帮您创建!!".format(str(themeNextname))) print("当前路径为[{}]".format(str(themePathNext))) os.mkdir(themePathNext) else: print("检测到[{}]已经创建!".format(str(themeNextname))) print("当前路径为[{}]".format(str(themePathNext))) inthemeNeData = urllib.request.urlopen(inthemeNextUrl).read().decode("gbk")#第一页图片内的源代码 thNextimgRe = re.compile(patimg).findall(inthemeNeData)#第一页图片地址 thNextimgPageRe =re.compile(patimgPage) .findall(inthemeNeData)#后面页的页数,未处理 print("已探测到有可下载图片,已开始全速前进开始下载") if bool(thNextimgRe) is True: themeNextimgPathFir = themePathNext + ".jpg" Url4_404 = thNextimgRe[0].replace(siteUrl,Url4_404,{}) Is404 = Is4041.getresponse().status if Is404 != 404: for tNimgFir in thNextimgRe: tNimgFirDown = urllib.request.urlretrIEve(tNimgFir,themeNextimgPathFir) print("[{}]标签的第[{}]页的[{}]主题的第[1]张图片已下载成功".format(str(tagname),int(m+1),str(themeNextname))) else: print("[{}]标签的第[{}]页的[{}]主题的第[1]张图片未找到下载地址!!".format(str(tagname),int(m + 1),str(themeNextname))) #上面第一张图片完成 '''现在来搞定后n页图片的下载''' thNextimgPage = thNextimgPageRe[0].replace("共","") print("[{}]主题已发现了[{}]张图片,加快马达,全速下载!!".format(str(themeNextname),int(thNextimgPage))) while int(r) <= int(thNextimgPage):#翻页下载后面页的图片,r=2 file_recode7 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode7.write("n=%s"%n) file_recode7.close() file_recode8 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode8.write("m=%s"%m) file_recode8.close() file_recode9 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode9.write("e=%s"%e) file_recode9.close() file_recode_1 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_1.write("r=%s"%r) file_recode_1.close() file_recode_2 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_2.write("") file_recode_2.close() thNextimgN = inThemeNextUrl.replace(".html","_%s.html"%r) # print(thNextimgN) thNextimgNData = urllib.request.urlopen(thNextimgN).read().decode('gbk') thNextimgNRe = re.compile(patImg).findall(thNextimgNData)#后面页数的下载地址 Url3_404 = thNextimgNRe[0].replace(siteUrl,"") # Url1_404 = siteUrl.replace("http://",Url3_404,{}) Is404 = Is4041.getresponse().status if Is404 != 404: for thNextimgNex in thNextimgNRe:#下载后面页数的图片 thNextimgPathNex = themePathNext + "\%s.jpg"%r thNextimgNDown = urllib.request.urlretrieve(thNextimgNex,thNextimgPathNex) print("[{}]标签的第[{}]页的[{}]主题的第[{}]张图片已下载成功!!".format(str(tagName),str(themeNextName),r)) else: print("[{}]标签的第[{}]页的[{}]主题的第[{}]张图片未找到下载地址!!".format(str(tagName),r)) r =int(r)+1 if r > int(thNextimgPage): r = 2 else: r = r else: print("[{}]主题的第[1]页未发现可下载内容,已自动进入下一主题".format(str(themeNextname))) '''上面主题页翻页已经完成,下面是主题页只有一页的代码,复制粘贴一下上面主题页第一页的改改就行了''' # print(r) e=int(e)+ 1 if int(e)>len(themeNextRe): e = 0 else: e = int(e) m=int(m)+1 if int(m)>len(themePage): m = 1 else: m = int(m) else: themeRe = re.compile(pattheme).findall(tagUrlData) # 主题的地址加名称 while int(t) < len(themeRe):#循环第一页主题t = 0 '''只有一页的标签的时候搞定代码''' themename = themeRe[int(t)][1].replace("","")#主题名称 themeUrl = themeRe[int(t)][0]#主题内地址,也是图片页第一页地址 # print(themeUrl) themePath = "F:\imgSpIDer\{}\{}".format(str(tagname),str(themename))#设置主题名路径 themePathIE = os.path.exists(themePath) if not themePathIE: print("检测到您电脑上没有[{}]文件夹,已自动帮您创建!!".format(str(themename))) print("当前路径为[{}]".format(str(themePath))) os.mkdir(themePath) else: print("检测到[{}]已经创建!".format(str(themename))) print("当前路径为[{}]".format(str(themePath))) themeUrlData = urllib.request.urlopen(themeUrl).read().decode("gbk")#主题内的源代码可以获取第一页图片地址和图片页数 inthemeRe = re.compile(patimg).findall(themeUrlData)#第一页图片的下载地址 inthemePageRe = re.compile(patimgPage).findall(themeUrlData)#获取了图片的页数,用于图片翻页。未处理 # print(inthemeRe[0]) if bool(inthemeRe) is True: print("已探测到有可下载图片,已开始全速前进下载") imgPathFir = themePath +".jpg" Url5_404 = inthemeRe[0].replace(siteUrl,Url5_404,{}) Is404 = Is4041.getresponse().status if Is404 != 404: # print(Is404) for imgFir in inthemeRe: imgFirDown = urllib.request.urlretrIEve(imgFir,imgPathFir) print("[{}]标签的[{}]主题的第[1]张图片已下载成功".format(str(tagname),str(themename))) else: print("[{}]标签的[{}]主题的第[1]张图片已下载成功".format(str(tagname),str(themename))) # print(inthemePageRe) inthemePage = inthemePageRe[0].replace("共","")#图片的页数,已处理 # print(inthemePage) print("[{}]主题已发现了[{}]张图片,加快马达,全速下载!!".format(str(themename),inthemePage)) '''图片翻页''' print("已开始下载剩余页数的图片") while int(w) <= int(inThemePage):#w =2 file_recode_3 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_3.write("n=%s"%n) file_recode_3.close() file_recode_4 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_4.write("t=%s"%t) file_recode_4.close() file_recode_5 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_5.write("w=%s"%w) file_recode_5.close() file_recode_6 = open(r"F:ImgSpiderecode.txt",encoding="utf-8") file_recode_6.write("") file_recode_6.close() imgUrlN = themeUrl.replace(".html","_%s.html"%int(w))#图片后面页数的地址,用于获取源代码,下载图片 # print(imgUrlN) imgUrlNData = urllib.request.urlopen(imgUrlN).read().decode('gbk')#图片页后面页的源代码 imgNext = re.compile(patImg).findall(imgUrlNData)#后面页数的下载地址 Url6_404 = imgNext[0].replace(siteUrl,Url6_404,{}) Is404 =Is4041.getresponse().status if Is404 != 404: for imgNex in imgNext:#下载后页数的图片 imgPathNex = themePath + "\%s.jpg"%w imgNextDown = urllib.request.urlretrieve(imgNex,imgPathNex) print("[{}]标签的[{}]主题的第[{}]张图片已下载成功!!".format(str(tagName),w)) else: print("[{}]标签的[{}]主题的第[{}]张图片已下载成功!!".format(str(tagName),w)) w =int(w)+1 if int(w) >int(inthemePage): w =2 else: w =int(w) else: print("[{}]主题的第[1]页未发现可下载内容,已自动进入下一主题".format(str(themename))) t =int(t) +1 if int(t)>len(themeRe) : t = 0 else : t = int(t) n +=1print("***************************")print(" 请输入任何内容结束")print("***************************")input()

更多好玩的源码或者书籍请进群:548377875   即可获取!

总结

以上是内存溢出为你收集整理的分享一份四百行的Python代码给你!可直接运行哦!企业级项目爬虫全部内容,希望文章能够帮你解决分享一份四百行的Python代码给你!可直接运行哦!企业级项目爬虫所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1208671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存