python3GUI——微博图片爬取工具
第一步
之前的文章的工具,只能下载部分的微博图片;所以改良升级了一下
对其get_pics_url 方法进行了如下修改
#解析出图片地址
def get_pics_url(self):
i = 1
# Robert添加
url_list=[]
# Robert添加
while True:
url = self.start_url + '&page={}'.format(i)
headers = {'User-Agent': get_ua()}
r = requests.get(url, headers=headers)
_json = json.loads(r.text)
items = _json["data"]["cards"]
flag = _json['ok']
if flag == 1: # 爬取数据标志+一个手动控制标志
for v in items:
picslist = v.get('mblog')
if picslist is not None:
img_urls = picslist.get('pics')
if img_urls != None:
for img_url_ in img_urls:
img_url = img_url_['large']['url']
# Robert添加
#yield img_url
url_list.append(img_url)
# Robert添加
else:
#1.06页数显示出现问题
t1.insert(END, f'***在第{i}页终止***\n')
t1.see(END)
t1.update()
if r1_var.get() == 1:
big_dir=disk+':/WeiBo_Pics'
os.startfile(big_dir)
break
i += 1
# Robert添加
return url_list
# Robert添加
原作者之前使用yield,不清楚为什么效果不好;所以我替换成了return,将所有的链接都存在一个list中
这样就可以获取到全部的图片了
第二步
t = threading.Thread(target=func, args=args)
原作者使用thread新建多线程下载
但我在使用时会有下载失败、超时、连接被中断的问题;所以我的解决办法是,直接将连接输出到txt然后用迅雷批量下载,这样就不会有遗漏了
注意,迅雷图片组最多一个组999个文件
有需要的多分几个组同时下
改后代码如下
#解析出图片地址
def get_pics_url(self):
i = 1
url_list=[]
while True:
url = self.start_url + '&page={}'.format(i)
headers = {'User-Agent': get_ua()}
r = requests.get(url, headers=headers)
_json = json.loads(r.text)
items = _json["data"]["cards"]
flag = _json['ok']
if flag == 1: # 爬取数据标志+一个手动控制标志
for v in items:
picslist = v.get('mblog')
if picslist is not None:
img_urls = picslist.get('pics')
if img_urls != None:
for img_url_ in img_urls:
img_url = img_url_['large']['url']
#yield img_url
url_list.append(img_url)
else:
#1.06页数显示出现问题
t1.insert(END, f'***在第{i}页终止***\n')
t1.see(END)
t1.update()
if r1_var.get() == 1:
big_dir=disk+':/WeiBo_Pics'
os.startfile(big_dir)
break
i += 1
print("url共有个数")
print(len(url_list))
# return url_list
#网上找的将整个list写入txt
file = open(user_name_selected+'.txt', 'w')
for i in range(len(url_list)):
s = str(url_list[i]).replace('{', '').replace('}', '').replace("'", '').replace(':', ',') + '\n'
file.write(s)
file.close()
# 返回空就报错而不会下载
return ""
生成的txt文件中http冒号变成了逗号,统一替换即可
下一步视频爬取
https://blog.csdn.net/weixin_43596589/article/details/122196871
本文完整代码
https://download.csdn.net/download/weixin_43596589/72125127
本文上篇文章
https://blog.csdn.net/weixin_43596589/article/details/122111187