吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1420|回复: 4
收起左侧

[已解决] 新建文件夹再把文件放到对应的文件夹出问题了。(python)

 关闭 [复制链接]
hj170520 发表于 2020-6-14 12:17
本帖最后由 hj170520 于 2020-6-15 00:16 编辑

爬取“人人网”的照片的时候,为了分类“相册”,把相册放到对应的“文件夹”。
但爬取过程中有的成功放到了文件夹里,有的没有,是不是他们的编码有问题?
爬取过程中“中文字符”必须转码,似乎有的没有转码成功,怎么解决这种事情呢?

核心代码是这块,cookies 我就不放了额

[Python] 纯文本查看 复制代码
import requests
import os
import re


class download():
    def __init__(self):
        self.url = 'http://photo.renren.com/photo/我的账户对应ID/albumlist/v7'
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                                      'Chrome/69.0.3497.100 Safari/537.36'}
        self.cookies = 
        self.albumName = []
        self.albumId = []
        self.album = []
        self.albumurl = []
        self.albumlist = {}
        self.photoid = []
        self.photourl = ''

    def album_information(self):
        req = requests.get(self.url, headers=self.headers, cookies=self.cookies)
        req.encoding = req.apparent_encoding
        self.albumName = re.findall(r'\"albumName\":\"(.*?)\"', req.text)
        self.albumId = re.findall(r'\"albumId\":\"(.*?)\"', req.text)
        for i in range(len(self.albumName)):
            self.album.append(str(self.albumName[i]).encode('utf-8').decode('unicode-escape', "ignore"))
            self.albumurl.append('http://photo.renren.com/photo/我的账户对应ID/album-%s/v7' % self.albumId[i])
        for ii in range(len(self.album)):
            self.albumlist[self.album[ii]] = self.albumurl[ii]
        return self.album, self.albumurl, self.albumlist

    def album_creat(self):
        for i in range(len(self.album)):
            if not os.path.exists('./%s' % self.album[i]):
                os.makedirs('./%s' % self.album[i])

    def photo_download(self):
        for i in range(len(self.albumlist)):
            self.albumdir = list(self.albumlist.keys())[i]
            req = requests.get(self.albumurl[i], headers=self.headers, cookies=self.cookies)
            req.encoding = req.apparent_encoding
            self.photoid = re.findall(r'\"photoId\":\"(.*?)\"', req.text)[0]
            self.photourl = 'http://photo.renren.com/photo/我的账户对应ID/photo-%s/v7' % self.photoid
            req = requests.get(self.photourl, headers=self.headers, cookies=self.cookies)
            self.largeurl = re.findall(r'\"largeurl\":\"(.*?)\"', req.text)
            for ii in range(len(self.largeurl)):
                if re.search(r'\\/', self.largeurl[ii]):
                    self.largeurl_new = self.largeurl[ii].replace('\\/', '/')
                    req = requests.get(self.largeurl_new, headers=self.headers, cookies=self.cookies)
                    with open('./%s' % self.albumdir + str(ii) + '.jpg', 'wb') as f:
                        f.write(req.content)
                else:
                    req = requests.get(self.largeurl[ii], headers=self.headers, cookies=self.cookies)
                    with open('./%s/' % self.albumdir + str(ii) + '.jpg', 'wb') as f:
                        f.write(req.content)


if __name__ == '__main__':
    d = download()
    d.album_information()
    d.album_creat()
    d.photo_download()


有大佬给把把脉吗?

用图片更直观显示:
Screen Shot 2020-06-14 at 12.27.41 PM.png
有的在文件夹内编号是0,1,2,3 但有的是在文件夹外,就不是编号0,1,2,3而是多了个文件夹的名字

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
tianshu44 + 1 + 1 热心回复!

查看全部评分

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

rsnodame 发表于 2020-6-14 13:52
你代码的第50行与第54行,一个是【open('./%s'】,一个是【open('./%s/'】,相差了个【/】,造成if里语句执行时没按你期望的结果

我觉得with open 那句完全可以写一遍就行
[Python] 纯文本查看 复制代码
if re.search(r'\\/', self.largeurl[ii]):
    self.largeurl_new = self.largeurl[ii].replace('\\/', '/')

req = requests.get(self.largeurl_new, headers=self.headers, cookies=self.cookies)
with open('./%s/' % self.albumdir + str(ii) + '.jpg', 'wb') as f:
    f.write(req.content)
 楼主| hj170520 发表于 2020-6-14 14:26
rsnodame 发表于 2020-6-14 13:52
你代码的第50行与第54行,一个是【open('./%s'】,一个是【open('./%s/'】,相差了个【/】,造成if里语句执 ...

厉害了大佬。
人人网编码转换总是出问题那又怎么解决呢?
新建文件的名称经常是乱码“”
rsnodame 发表于 2020-6-14 14:58
hj170520 发表于 2020-6-14 14:26
厉害了大佬。
人人网编码转换总是出问题那又怎么解决呢?
新建文件的名称经常 ...

这个……没研究过人人的网页,说不上啥…………看到你用了【self.album.append(str(self.albumName).encode('utf-8').decode('unicode-escape', "ignore"))】做转码,我能想到的就是发现乱码后定位到对应页面,研究一下具体是啥编码
 楼主| hj170520 发表于 2020-6-14 15:37
rsnodame 发表于 2020-6-14 14:58
这个……没研究过人人的网页,说不上啥…………看到你用了【self.album.append(str(self.alb ...

好吧。不过还是谢谢大佬了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-30 19:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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