注册 登录
编程论坛 Python论坛

写了个爬取美女网站套图的爬虫

sdg123 发布于 2021-11-28 09:28, 5509 次点击
初学3个月写了几个爬取美女网站的爬虫,一个爬了800g,自动运行不用管它,有需要的我来爆码。
34 回复
#2
chansnsn2021-11-28 11:45
严重需要~
#3
Walter20212021-11-28 11:47
回复 楼主 sdg123
楼主,分享一下源码
#4
vb6developer2021-12-03 21:44
你选的那些网站?
#5
sssooosss2021-12-05 13:53
共同学习
#6
sdg1232021-12-05 13:53
回复 4楼 vb6developer
秀人网,爱丝内,宅男女神,等等
#7
zyj25252021-12-06 14:23
#8
kuaizioffice2021-12-13 19:20
#9
xnyz5202021-12-29 09:45
严重需要!严重需要~!
#10
sssooosss2021-12-30 14:46
共同进步
#11
shmily_cbb2022-01-12 16:09
想学习一下
#12
peng1582022-01-17 21:06
需要,可以发一下吗?
#13
蟒蛇出洞2022-01-19 13:45
#14
goodman198902022-02-04 13:36
你好
能给我发一份吗
#15
sssooosss2022-02-06 08:14
大家过年好
#16
duobuo1232022-03-01 22:54
楼主辛苦,可以教教如何编写的吗?
#17
ylyzzdq2022-03-03 08:34
严重需要
#18
Xao1bf2022-03-31 19:11
一起进步 可以发我吗
我需要
#19
sssooosss2022-04-08 16:27
共同学习
#20
陈开森2022-04-10 16:16
严重需要
#21
YH_21_LIU2022-04-10 17:58
回复 2楼 chansnsn
需要!!!!!!
#22
asdf1234222022-04-19 14:32
严重需要!严重需要~!
#23
sssooosss2022-04-20 17:36
放代码啊
#24
yuma2022-04-23 15:54
给我发一份吧。
#25
莫克2022-05-02 15:45
至今未放
#26
sssooosss2022-05-06 16:33
这个有需求么
#27
sdg1232022-05-24 09:23
不好意思大家,好久没上这个论坛了,忘记这个事情了。我晚上回去发。
#28
sdg1232022-05-24 09:50
import requests
from bs4 import BeautifulSoup
import os
import re
import time
import PySimpleGUI as sg
import random

#获得每页专辑的地址和专辑名称
def zongwangzhi(url):
    data=paqu(url)
    data=BeautifulSoup(data,"html.parser",from_encoding="gb18030")#解决中文乱码
    d=data.find_all('div',class_="listMeinuT")
    # print(d)
    d=str(d[0])
    findlink=(r'<a class="MMPic"(.*?)</li><li>')
    link=re.findall(findlink,d)

    return link

#获得每个专辑的页数
def yeshu(url):
    sj=paqu(url)
    data=BeautifulSoup(sj,"html.parser",from_encoding="gb18030")
    y=data.find_all("ul",class_="articleV4Page l")
    y=str(y[0])
    findy=(r'共(.*?)页:')
    linky=re.findall(findy,y)
    return int(linky[0])


#拼接专辑地址
def zhuanjidiz(url,cs,wenjiandz):
    for i in range(1,cs+1):
        if i==1:
            url1=url
            print("一共有"+str(cs)+"页,现在下载的是第1页。")
            sj=paqu(url1)
            data=BeautifulSoup(sj,"html.parser",from_encoding="gb18030")
            d=data.find_all('div',class_="content")
            d=str(d[0])
            findlink=(r' src="(.*?)"')
            link=re.findall(findlink,d)

        else:
            url1=url[:-5]+"_"+str(i)+".html"
            print("一共有"+str(cs)+"页,现在下载的是第"+str(i)+"页。")
            sj=paqu(url1)
            data=BeautifulSoup(sj,"html.parser",from_encoding="gb18030")
            d=data.find_all('div',class_="content")
            d=str(d[0])
            findlink=(r' src="(.*?)"')
            link=re.findall(findlink,d)

        for y in link:
            baocuntupian(y,wenjiandz)



#爬取网页数据
def paqu(url):
    header = {
                'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
            }
    try:
        urldate=requests.get(url,headers=header,timeout=12).content
        return urldate
    except:
        try:
            print("\n","*****************************************网络超时重新连接第1次*******************************************")
            urldate=requests.get(url,headers=header,timeout=12).content
            return urldate
        except:
            try:
                print("\n","*************************************网络超时重新连接第2次*******************************************")
                urldate=requests.get(url,headers=header,timeout=30).content
                return urldate
            except:
                print("\n","--------------------------------------网络连接失败请重新尝试--------------------------------------------------")
                # print(time.sleep(86400))
                pass
#保存图片
def baocuntupian(url,wenjiandizi):
    tupan = paqu(url)

    name=random.randint(0,10000000)
    print("正在下载......")
    file=open(wenjiandizi+"\\"+str(name)+".jpg","wb")
    file.write(tupan)                    
    file.close()






def main(dz,ks,js):
    kaishi=ks
    jieshu=js

    #获得总的网页,返回每个专辑的网页地址和专辑名称
    for i in range(kaishi,jieshu+1):
        url="https://www.tu963.cc/y/2/list_2_"
        list1=[]
        url=url+str(i)+".html"
        print(url)
        list1=zongwangzhi(url)

        for o in list1:
            find1=(r' href="(.*?)" target=')
            dizi_href=re.findall(find1,o)
            find2=(r'title="(.*?)">')
            dizi_title=re.findall(find2,o)
            # print(dizi_href[0],dizi_title[0])
            ys=yeshu(dizi_href[0])

            ml=dz+dizi_title[0]
            if not os.path.exists(ml):
                    print("\n","已经新建文件夹!")
                    os.mkdir(ml)
                    print("----------------------------------------------------------------------------")
                    zhuanjidiz(dizi_href[0],ys,ml)
            else:
                print("文件夹已经存在,不用爬取!")
                print("-----------------------------------------------------------")
    print("---------------完成----------------------------")


def denglu_windows():
    font_=("黑体",20)
    layout=[
            [sg.InputText("请选择要保存的路径......",font=font_,size=(30,1),key="-dizhi-"),sg.FolderBrowse("选择",font=font_)],
            [sg.T("开始网页:",font=font_),sg.In("1",enable_events=True,font=font_,key="-kaishi-",size=(3,1))],
            [sg.T("结束网页:",font=font_),sg.In("1",enable_events=True,font=font_,key="-jieshu-",size=(3,1))],
            [sg.T("页数进度:",font=font_),sg.ProgressBar( max_value=5,orientation="h",size=(47,20),key="-bar-")],
            [sg.T("专辑进度:",font=font_),sg.ProgressBar(5,orientation="h",size=(47,20),key="-bar2-")],
            [sg.T("图片进度:",font=font_),sg.ProgressBar(5,orientation="h",size=(47,20),key="-bar3-")],
            [sg.B("爬取",font=font_)],

            ]

    window=sg.Window("爬虫",layout)
    list1=[]
    while True:
        event,values=window.read()
        if event=="爬取":
            main(values["-dizhi-"]+"\\",int(values["-kaishi-"]),int(values["-jieshu-"]))
        if event==None:
            break
    window.close()

denglu_windows()

#大家将代码负责到编辑器中运行,如果报错就看看哪些库没有安装,将对应的库安装上就可以了。开始运行是要先选择文件保存的位置,然后选择要下载的页码,开始页码一定要大于等于1。
#29
sdg1232022-05-24 11:45
回复 3楼 Walter2021
已分享
#30
sdg1232022-05-24 11:46
回复 25楼 莫克
已放
#31
sdg1232022-05-24 11:47
回复 22楼 asdf123422
已发
#32
liutongs2022-05-26 15:25
等我学完我也爬爬
#33
sssooosss2022-05-30 17:25
赶快发出来吧
#34
sdg1232022-06-01 13:04
回复 33楼 sssooosss
在第三页已经发了
#35
sdg1232022-06-01 13:05
回复 32楼 liutongs
代码已经发了,在第三页
1