python爬取“这是一个神奇的帖子,共计11w妹子图”

本帖最后由 shitou153 于 2018514 17:24 编辑
我又用pyinstaller库

python爬取“这是一个神奇的帖子,共计11w妹子图”

本帖最后由 shitou153 于 2018514 17:24 编辑

我又用pyinstaller库,打包成了pythonimage.exe文件。打包之后发现只有×64系统可以运行。原谅我的无能,才学2周多,我感觉我还行。

下载,运行,出现黑框子,等黑框子消失。然后打开D盘,找pythonimage开头的文件夹。如果喜欢,就多运行几次。保存的文件夹为:D:/pythonimage(n) n=1,12,123,1234,12345,123456……

百度云资源链接:https://pan.baidu.com/s/19zQbPyy9GZPJpmsuYG23A密码:kv40

我不是标题党,我只是多次上传图片失败

引用

这几天刚好学习python,看到吧友发的帖子,立马想到用python爬取一下,算是给python课程交一个小小的作业吧。

用的是requests库。也就是说,不仅要装上python,还要安装requests库才可以运行。

说一下安装requests库吧:win+R>输入“pip install requests”。等待。

小弟不才,想在这里贴上我写的源码:

import requests #引入requests库

import os

url=”https://yantuz.cn/mmPic/” #引用的帖子提供的链接

pat=”D:/pythonimage” #默认保存的地址

b=1

while(os.path.exists(pat) and b<100): #如果默认地址存在,则新创建一个地址

pat+=str(b)

b+=1

os.mkdir(pat)

for i in range(1,100): #默认1——99为照片名称

path=pat+”//”+str(i)+”.jpg”

r=requests.get(url)

if r.status_code!=200:

print(“第”+str(i)+”次返回资源错误”) #如果多次返回资源错误,八成URL不行了

else:

with open(path,’wb’) as f:

f.write(r.content)

f.close()

print(“保存成功”+str(i),end=”)

本来想上传我爬取的图片,可是不晓得怎么回事,我上传之后总显示成功上传0张,于是我放弃了。

写的不好,有兴趣的试试吧。谢谢了。

2楼:好像python不太方便,我会更新为 .exe 文件的。

3楼:源码缩进有问题

4楼:https://yantuz.cn/339.html

5楼:哈哈 不是开发人员不懂这个

6楼:两三点还在写爬虫,幸苦了,作为py交流!

import requests as req # 引入requests库

import os

import traceback

import time

requests = req.session()

url = “https://yantuz.cn/mmPic/” # 引用的帖子提供的链接

se_dir = ‘img’

maxDir = 1

def down_img(url, path):

dir_path = os.path.dirname(path)

if not os.path.exists(dir_path): os.mkdir(dir_path)

try:

img_io = requests.get(url).content

with open(path, ‘wb’) as f:

f.write(img_io)

print(‘下载成功:’, path)

return 0

except:

traceback.print_exc()

print(‘下载失败:’, path)

return 1

def main():

“””

单线程版本

:return:

“””

print(‘单线程启动 抓取’)

for i in range(1, maxDir + 1):

dir = os.path.join(os.getcwd(), ‘%s%d’ % (se_dir, i))

error_num = 0

for i in range(1, 100 + 1):

error_num += down_img(‘%s?t=%s’ % (url, time.time()), os.path.join(dir, ‘%d.jpg’ % i))

if error_num > 100:

print(‘error num:’, error_num)

break

print(‘下载结束’)

from concurrent.futures import ThreadPoolExecutor

def mainThreadPool():

“””

多线程版本,实测 速度差不多,就没必要弄 多线程了

:return:

“””

print(‘多线程启动 抓取’)

with ThreadPoolExecutor(3) as pool:

for i in range(1, maxDir + 1):

dir = os.path.join(os.getcwd(), ‘pool_%s%d’ % (se_dir, i))

for j in range(1, 100 + 1):

pool.map(down_img, )

pool.submit(down_img, ‘%s?t=%s’ % (url, time.time()), os.path.join(dir, ‘%d.jpg’ % j))

print(‘下载结束’)

if __name__ == ‘__main__’:

# main()

mainThreadPool()

复制代码

7楼:标题党,图片呢?

裤子👖都脱了你给我看这个?

8楼:百度云附件:main.rar

简单修改了一下,然后打包成exe

直接下载执行即可

9楼:silver0502 发表于 2018513 07:54

源码缩进有问题

没毛病吧,我直接从IDLE复制过来的。

10楼:yangtutu 发表于 2018513 13:11

百度云附件:main.rar

简单修改了一下,然后打包成exe

老哥,你这下载到那个文件夹我找了半天才找到

(0)

相关推荐