吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11446|回复: 30
收起左侧

[Python 转载] ptyhon3 网站图片爬取小爬虫

[复制链接]
MrTong 发表于 2017-5-17 18:15
刚学python不久 也是看别人的例子学习的 爬取页代码获取有问题 导致不能完整爬取 懒得改了 仅供参考 不喜勿喷
图片也只是爬取一部分

meizutu.png
[Python] 纯文本查看 复制代码
import requests
import re
from bs4 import BeautifulSoup
import sys
url = 'https://www.meitulu.com/'
def getHTMLTEXT(url):
        try:
                headers= headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
                'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
                'Accept-Encoding':'gzip, deflate',
                'Connection':'keep-alive',
                'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
                }
                response = requests.get(url,headers=headers)
#                raise_status_code()
                response.encoding = 'utf-8'
                return response.text
        except:
                pass
def getURLlist(list):      #获取每个链接的完整链接
        html=getHTMLTEXT(url)
        soup=BeautifulSoup(html,'html.parser')
        urllist = soup.select('div.boxs > ul > li > a ')
        for fhref in urllist:
                try:
                        href = fhref.attrs['href']
                        hrefall = 'https://www.meitulu.com/' + href
                
                        list.append(hrefall)
                except:
                        continue
        return list
def getpagelist(pageurl,pagelist):  #传入一个链接 获取这个个链接的每个页链接

        pagehtml = getHTMLTEXT(pageurl)
        soup=BeautifulSoup(pagehtml,'html.parser')
        pageurllist = soup.select('html body center div#pages a')
        for pageurl in pageurllist:
                pagehref = 'https://www.meitulu.com'+ pageurl.get('href')
                pagelist.append(pagehref)
                
        pagelist.pop()
        return pagelist


def downloaderpic(pagehref,picpath):                  #传入一个pageurl 获取页面里面每张图片的链接并且下载到指定目录


        html=getHTMLTEXT(pagehref)
        soup=BeautifulSoup(html,'html.parser')
        pichrefs = soup.select('html body div.content center img')
        for spichref in pichrefs:
                pichref = spichref.get('src')
                picname = pichref.split('/')[-1]
                headers= headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
                'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
                'Accept-Encoding':'gzip, deflate',
                'Connection':'keep-alive',
                'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
                }
                response= requests.get(pichref,headers=headers)
                path = picpath+ picname
                print(response.url)
                
                with open(picpath+ picname,"wb") as f:
                        f.write(response.content)
                        f.close
                



#def downloaderpic(pageurl):
        
def main():
        """
        urllists 是首页中所有页面的集合
        pagelist 是每个链接里面的所有页的集合
        """
        picpath = "D:/pic/"
        ulist=[]
        urllists = getURLlist(ulist)
        plist =[]

        howurl = len(urllists)
        flag = 0
        for urllist in urllists:
                pagelist= getpagelist(urllist,plist)  #对页面遍历获取所有每个链接的页面list
                flag = flag +1
                howpage = 0+len(pagelist)
                count = 0
                for pagehref in pagelist:  #对页面list遍历获取所有页面的href
                        downloaderpic(pagehref,picpath)
                        count = count +1
                        print('共有{0}链接正在下载第{1}个连接-------第{1}个链接有{2}个页面正在下载第{3}个页面'.format(howurl,flag,howpage,count),end="\r")
main()
print("下载完成,文件保存在D:/pic/目录下")

免费评分

参与人数 6吾爱币 +5 热心值 +5 收起 理由
hlink1021 + 1 + 1 热心回复!
zeaen + 1 + 1 用心讨论,共获提升!
宇宙小菜鸟 + 1 图片不错~~
wi5101 + 1 + 1 用心讨论,共获提升!
me17 + 1 问下,能通用吗,还是改啥正则?
落寒枫 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

1462326016 发表于 2017-5-17 21:12
MrTong 发表于 2017-5-17 19:29
第一个写了被注释了   第一次写 很粗糙

恩恩,可以试一下,我都是保存url,然后统一爬,万一断了可以重来,你这样断了就要重新爬了。曾经写了一个爬虫爬了几个贴吧的所有精品贴,爬了几百万的图片,然后多线程下了一天下完了,占了我十几G的硬盘。。。
头像被屏蔽
summer591 发表于 2019-4-27 17:21
Ly5493 发表于 2017-5-17 18:23
落花无痕 发表于 2017-5-17 18:29
也是初学Python,代码拿走了。
孽小帅才 发表于 2017-5-17 19:02
正在学python。。。可以给注释一下什么意思吗?
1462326016 发表于 2017-5-17 19:08
用多线程爬多好,还有下载图片的时候最好检查下状态码,有可能把404写进文件里,导致不能看。
 楼主| MrTong 发表于 2017-5-17 19:29
1462326016 发表于 2017-5-17 19:08
用多线程爬多好,还有下载图片的时候最好检查下状态码,有可能把404写进文件里,导致不能看。

第一个写了被注释了   第一次写 很粗糙
 楼主| MrTong 发表于 2017-5-17 19:30
Ly5493 发表于 2017-5-17 18:23
还是想要你的图啊。。。

python3  拿回去自己爬  学校网络太慢了
落寒枫 发表于 2017-5-17 19:53
最近也在学爬虫 可惜还没达到这个境界
wi5101 发表于 2017-5-17 21:54
用心讨论,共获提升!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 04:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表