bangumi图片爬虫
本帖最后由 Zeaf 于 2020-5-10 22:24 编辑5.10 优化标题提取,解决有些番剧名包含‘/’符号导致保存不了的问题
https://static.52pojie.cn/static/image/hrline/1.gif
受某位大佬所托做的爬虫,仍存在许多问题,例如线程跑不完,有些番剧名包含‘/’符号导致保存不了等等,但自认为应该还是可以的{:1_926:}
原网址:https://bangumi.tv/anime/browser?sort=rank
# -*- coding: utf-8 -*-
"""
Created on Wed May6 09:58:44 2020
@author: Zeaf
"""
import requests# 导入requests库
import re# 导入正则表达式库
import os # 保存文件
import threading #导入多线程库
os.system('title bangumi图片爬取@Zeaf')#设置窗口标题
if not os.path.exists('img'):# 判断文件夹是否存在,如果不存在:
os.mkdir('img')# 创建一个文件夹
user = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
def get_img(i):
#爬取第i页图片
url='https://bangumi.tv/anime/browser?sort=rank&page='+str(i)
response = requests.get(url,headers=user)#模拟访问
response.encoding = response.apparent_encoding#防止乱码
html = response.text# 用文本显示访问网页得到的内容
url1s = re.findall('<a href="(/subject/.*?)" class=', html)# 用正则表达式获得本页各网址
url1s = sorted(set(url1s),key=url1s.index) # 去除重复元素
for url1 in url1s:
url1 = 'https://bangumi.tv'+url1
response = requests.get(url1,headers=user)#模拟访问
response.encoding='utf8'#防止乱码
html = response.text# 用文本显示访问网页得到的内容
url2s = re.findall('<a href="(//lain.bgm.tv/pic/cover/.*?)" title', html)# 用正则表达式获得图片直链
file_name = re.findall('title="(.*?)" alt=', html)
#去除图片名称中的“/”
try:
file_name = file_name.replace('/','_')
except:
file_name = file_name
url2 = 'https:'+url2s
response = requests.get(url2, headers=user)
with open('img'+ '/' + file_name+'.jpg', 'wb') as f:
f.write(response.content)
print('成功保存图片'+file_name+'~')
print('第'+str(i)+'线程结束!')
if __name__ == '__main__':
i = int(input('你想爬取的页数:'))
for x in range(1,i+1):
threading.Thread(target=get_img, args=(x,)).start() # 启动多线程
本帖最后由 Zeaf 于 2020-5-10 22:25 编辑
第八-奋斗 发表于 2020-5-6 11:53
爬这些东西能被发现吗
多了就被发现呗{:1_926:}加个停顿可以有效避免,但感觉还是速度比较重要
还有切换请求头的方法~ 古月银狐 发表于 2020-5-7 14:51
可以留个方式学习交流下吗
??我是萌新{:1_925:}
而且论坛不准留
在这交流也没事啊,不专门还有个编程语言讨论区 感谢分享 这个模拟访问是会暂停几秒还是不会呢? silence05 发表于 2020-5-6 11:21
这个模拟访问是会暂停几秒还是不会呢?
未设置暂停,爬取的网站顶得住{:1_926:} 能爬B站吗 爬的是封面吗
https://cdn.jsdelivr.net/gh/hishis/forum-grandmaster-for-discuz/public/images/patch.gif fly-陌路 发表于 2020-5-6 11:27
能爬B站吗
爬b站的很多吧...论坛自搜 本帖最后由 Zeaf 于 2020-5-7 00:13 编辑
taozididi 发表于 2020-5-6 11:30
爬的是封面吗
是的,就是封面,不过是原图 爬这些东西能被发现吗
页:
[1]
2