吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 926|回复: 22
收起左侧

[求助] python运行没问题,但是有个报错,哪的问题呢

[复制链接]
xuegaoxiansen 发表于 2022-10-4 12:09
本帖最后由 xuegaoxiansen 于 2022-10-4 12:25 编辑

[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup
import os

url = 'https://www.mmonly.cc/tag/yqmn/'

resp = requests.get(url)

html = (resp.content.decode('gbk'))

soup = BeautifulSoup(html,'html.parser')

titlea = soup.find_all('div',attrs={'class':'item_b'})

for item in titlea:

name = item.find_all('b')[0].text
    try:
        os.mkdir('./学习/'+name)
    except Exception as e:
        continue


报错内容
1.png

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

lzhlv666666 发表于 2022-10-5 07:28
本帖最后由 lzhlv666666 于 2022-10-5 07:29 编辑

妹子图给你爬下来了{:1_918:}

[Python] 纯文本查看 复制代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import random
import requests
import re
import os
#from lxml import etree
from bs4 import BeautifulSoup
import time
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}  # UA伪装
def Find(string):
    # findall() 查找匹配正则表达式的字符串
    url = re.findall('<.*?href="(.*?)".*?', string)[0]
    return url
def hq(url):
    #url = 'https://www.mmonly.cc/tag/yqmn/'
    """resp = requests.get(url)
    
    html = (resp.content.decode('gbk'))
    
    soup = BeautifulSoup(html, 'html.parser')"""
    html = requests.get(url,headers).content.decode('gbk')
    soup = BeautifulSoup(html,"html.parser")
    titlea = soup.find_all("div",{'class':'title'})
    return titlea
def ym(url):
    html = requests.get(url, headers).content.decode('gbk')
    soup = BeautifulSoup(html, "html.parser")
    titlea = soup.find_all("div", {'class': 'pages'})
    return titlea
url = 'https://www.mmonly.cc/tag/yqmn/'
hh=hq(url)
#print(hh)
kk=0
wjm=""
for item in hh:
    try:
        #print("标题:",item.text)
        #print("网址:",Find(str(item)))
        #webbrowser.open(Find(str(item)))
        k=Find(str(item))
        #print(k)
        ys=ym(k)
        var = int(re.findall('<.*?共(.*?)页.*?', str(ys))[0])
        #print(var)
        for m in range(1, var):
            st=time.perf_counter()
            #print(m)
            if m == 1:
                los=k
            if m >= 2:
                los=str(k.replace(".html", "")+"_"+str(m)+".html")
            #print(los)
            #time.sleep(random.randint(0.25, 1.25))
            html = requests.get(los, headers).content.decode('gbk')
            soup = BeautifulSoup(html, "html.parser")
            try:
                kh = str(soup.find_all("li", {'class': 'pic-down h-pic-down'}))
                if kh != "":
                    pass
            except:
                pass
            try:
                response = requests.get(Find(kh), headers=headers, timeout=20).content
                wjj=str(".\\" + "图集1")
                if not os.path.exists(wjj):
                    try:
                        os.mkdir(wjj)
                    except:
                        os.makedirs(wjj)
                wjm=str(item.text +"_"+ str(m) +".jpg")
                file_name = str(wjj+"\\" + wjm)
                with open(file_name, 'wb') as f:
                    f.write(response)
                    time.sleep(random.uniform(1, 2))
            except:
                print("错误")
                pass
            kk=kk+1
            print("No_"+str(kk)+":"+wjm+" "+Find(kh))
            print("用时:"+format(time.perf_counter() - st,"0.2f")+"秒")
    except:
        pass
tianyagd 发表于 2022-10-4 22:19
for item in titlea:

name = item.find_all('b')[0].text
第二行没有缩进
yjn866y 发表于 2022-10-4 17:52
[Python] 纯文本查看 复制代码
for item in titlea:
 
    name = item.find_all('b')[0].text
    try:
        os.mkdir('./学习/'+name)
    except Exception as e:
        continue


name这句代码的缩进错了。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xuegaoxiansen + 1 + 1 用心讨论,共获提升!

查看全部评分

haidibingjing 发表于 2022-10-4 12:22
name = item.find_all('b')[0].text   应该是这里没有查到内容
 楼主| xuegaoxiansen 发表于 2022-10-4 12:24
haidibingjing 发表于 2022-10-4 12:22
name = item.find_all('b')[0].text   应该是这里没有查到内容

查到了呀,都成功的创建了文件夹并命名
运行没问题,就是看见这个报错想要知道怎么回事
haidibingjing 发表于 2022-10-4 12:29
xuegaoxiansen 发表于 2022-10-4 12:24
查到了呀,都成功的创建了文件夹并命名
运行没问题,就是看见这个报错想要知道怎么回事

我记得这个意思应该是超出索引范围,好久没写了
YuanFang0w0 发表于 2022-10-4 12:38
超出索引,你的内容不是一个列表或者列表为空
特别快递 发表于 2022-10-4 12:39
报错是因为类名为item_b的div标签,有的有<b>这个子标签有的没有,要在name = item.find_all('b')[0].text这一行前面加一个判断item.find_all('b')是否存在,你程序能正常运行应该是没有<b>的正好在你所需要的标签的后面所以文件依然正常建立了,但其实程序是运行终止了的

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
LonelyFish + 1 + 1 用心讨论,共获提升!
xuegaoxiansen + 3 + 1 用心讨论,共获提升!

查看全部评分

hrpzcf 发表于 2022-10-4 12:57
你确定你发的代码是“学习.py”这个文件的吗?跟报错对不上啊,PyCharm点右上角运行的文件不一定是正在编辑的文件哦
netspirit 发表于 2022-10-4 13:01
切换成调试模式就能看到了
luxingyu329 发表于 2022-10-4 13:29

你的24行  name = item.find_all('b')[0].text 正则没有匹配到内容,是个空列表,所以是列表下标超出界限

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xuegaoxiansen + 1 + 1 谢谢@Thanks!

查看全部评分

fanvalen 发表于 2022-10-4 13:47
如果titlea=['b','']中有一个为空,再匹配一下就是就是[],一个没有任何元素的列表你访问0下标必然是超出索引
建议你打印titlea来看看内容

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xuegaoxiansen + 1 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2022-11-27 06:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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