hahawangzi 发表于 2020-4-27 09:24

python 函数返回多个值问题??求教

def manhua(html:str):
    rr =requests.get(html,headers=headers)
    rr.encoding="utf-8"
    duo=[]
    manhua=BeautifulSoup(rr.text,'html.parser')
    dizhi=manhua.find('ol',class_="links-of-books num_div")
    for a in dizhi.find_all('li',class_='sort_div'):
      duo["dizhi"]=('https://www.manhuadb.com'+str(a.find('a').get('href')))
    return duo["dizhi"]
   上述函数 dizhi.find_all 返回三个网址

然后我用以下函数套用这个函数所获得的网址,并摘取里面的图片。
发现duo这个函数返回的值只有一个能抓到图片 后面两个并没有自动抓取。
请问如何返回三个以上函数值?
def download(url2:str,page:int):
    r4 = requests.get(url2+'.html',headers=headers)
    r4.encoding="utf-8"
    dj = BeautifulSoup(r4.text,'lxml')
    name = dj.find('h1',class_='h2 text-center mt-3 ccdiv-m').getText()
    mkdir(name)
   
    for x in range(1,page):
      try:
            r3 = requests.get(url2+'p'+str(x)+'.html',headers=headers)
            r3.encoding="utf-8"
            dl = BeautifulSoup(r3.text,'lxml')
            page = dl.find('li',class_="breadcrumb-item active").getText()
            reponse=dl.find('img',class_="img-fluid show-pic").get('src')
      
            image=requests.get(reponse,headers=headers)
            time.sleep(0.1)   
            filename='{}/{}/{}'.format('yiteng',name,name+str(x)+'.jpg')
            with open(filename,'wb') as fpp:
                fpp.write(image.content)
                print('成功第{}图片'.format(str(x)))
      except:
            pass
            
    print('全部保存成功!')

pzx521521 发表于 2020-4-27 09:32

def manhua(html:str):
    rr =requests.get(html,headers=headers)
    rr.encoding="utf-8"
    duo=[]
    manhua=BeautifulSoup(rr.text,'html.parser')
    dizhi=manhua.find('ol',class_="links-of-books num_div")
    for a in dizhi.find_all('li',class_='sort_div'):
      duo.append=('https://www.manhuadb.com'+str(a.find('a').get('href')))
    return duo
返回成数字

hahawangzi 发表于 2020-4-27 09:48

pzx521521 发表于 2020-4-27 09:32
def manhua(html:str):
    rr =requests.get(html,headers=headers)
    rr.enco ...

返回数字 和字符串 有什么区别啊,为什么直接返回列表 我用
print(duo)是可以显示出三个网址的,就是抓取的时候就抓取第一个

Db2k 发表于 2020-4-27 09:56

虽然不懂python 但是返回值不用局限于返回 你可以传参进去然后在函数体内部修改参数 外部不也就修改了吗?

wodeweiyimpm 发表于 2020-4-27 09:58

小白来来看看

空想昼夜 发表于 2020-4-27 10:29

以逗号分隔可以返回一个list 如return 1, 2, 3外部调用后应该得到的是一个list
或者也可以直接返回一个list类型的数组
你这个只返回一个是因为你for里面赋值都覆盖了...

wkfy 发表于 2020-4-27 10:29

最好给完整代码,看你这代码不知道你调用是否有问题。看起来只是传入一个网址
页: [1]
查看完整版本: python 函数返回多个值问题??求教