吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3464|回复: 15
收起左侧

[Python 转载] bangumi图片爬虫

  [复制链接]
Zeaf 发表于 2020-5-6 11:05
本帖最后由 Zeaf 于 2020-5-10 22:24 编辑

5.10 优化标题提取,解决有些番剧名包含‘/’符号导致保存不了的问题

受某位大佬所托做的爬虫,仍存在许多问题,例如线程跑不完,有些番剧名包含‘/’符号导致保存不了等等,但自认为应该还是可以的
原网址:https://bangumi.tv/anime/browser?sort=rank
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
"""
Created on Wed May  6 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)[0]
        #去除图片名称中的“/”
        try:
            file_name = file_name.replace('/','_')
        except:
            file_name = file_name
        url2 = 'https:'+url2s[0]
        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() # 启动多线程

免费评分

参与人数 5吾爱币 +5 热心值 +4 收起 理由
Coda + 1 + 1 我很赞同!
Futuresing + 1 用心讨论,共获提升!
ymhld + 1 + 1 谢谢@Thanks!
牧鱼龙 + 1 + 1 谢谢@Thanks!
往復不息 + 1 + 1 我很赞同!

查看全部评分

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

 楼主| Zeaf 发表于 2020-5-6 12:14
本帖最后由 Zeaf 于 2020-5-10 22:25 编辑
第八-奋斗 发表于 2020-5-6 11:53
爬这些东西  能被发现吗

多了就被发现呗加个停顿可以有效避免,但感觉还是速度比较重要

还有切换请求头的方法~
 楼主| Zeaf 发表于 2020-5-7 17:40
古月银狐 发表于 2020-5-7 14:51
可以留个方式学习交流下吗

??我是萌新
而且论坛不准留
在这交流也没事啊,不专门还有个编程语言讨论区
吞茶嚼花 发表于 2020-5-6 11:20
silence05 发表于 2020-5-6 11:21
这个模拟访问是会暂停几秒还是不会呢?
 楼主| Zeaf 发表于 2020-5-6 11:23
silence05 发表于 2020-5-6 11:21
这个模拟访问是会暂停几秒还是不会呢?

未设置暂停,爬取的网站顶得住
fly-陌路 发表于 2020-5-6 11:27
能爬B站吗
taozididi 发表于 2020-5-6 11:30
爬的是封面吗

 楼主| Zeaf 发表于 2020-5-6 11:32

爬b站的很多吧...论坛自搜
 楼主| Zeaf 发表于 2020-5-6 11:33
本帖最后由 Zeaf 于 2020-5-7 00:13 编辑

是的,就是封面,不过是原图
第八-奋斗 发表于 2020-5-6 11:53
爬这些东西  能被发现吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 09:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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