鱼C论坛

 找回密码
 立即注册
查看: 1093|回复: 5

多个函数的参数如何设置?(自己写的爬虫无法运行)

[复制链接]
发表于 2020-4-27 15:58:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 熊猫打字 于 2020-4-27 16:00 编辑

求问,要爬取论坛某一页的帖子里所有图片,我写了如下的程序,并整理成函数,但是函数的参数不会设置,一直无法运行。
比如def openurl(url)   括号里为什么写url,后面几个函数的()里面应该怎么写?放上我的代码,请大佬们帮助
加入要爬取:【http://bbs.tianya.cn/list-39-1.shtml】这个网站里,所有帖子里的图片。
import urllib.request as ur
import re
import chardet

def openurl(url):                     #打开网页的函数
    req = ur.Request(url)
    req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36')
    response = ur.urlopen(req)
    html = response.read()
    return html

def encodeurl(url):                     #获取网页编码的函数
    html = openurl(url)
    encode = chardet.detect(html)['encoding']
    if encode=='GB2312':
        encode = 'GBK'
    htmlcode=html.decode(encode)
    return htmlcode

def getpageurl(url):                    #获取要爬取论坛下所有帖子的网址
    url = 'https://www.论坛主版面.com'              #假如这个是某论坛一个板块,也就是要爬取的网址
    htmlcode = encodeurl(url)        #对该网页进行解码
    a = r'查找该版下所有的帖子链接的表达式正则表达式'           #获取要爬取论坛下所有帖子的网址
    pageurls=[]
    pages = re.findall(a,htmlcode)              #将帖子网址存入列表
    return pages
    
def findimg(url):            #获取帖子里所有图片的网址
    pages=getpageurl(url)
    for each in pageurls:
        htmlcode = encodeurl(each)          #打卡帖子并解码
        b = r"查找某帖子里图片的正则表达式"          #查找某帖子里图片的正则表达式
        piclists = re.findall(b,htmlcode)         #将帖子里图片地址存入列表
    return piclists
    
def savingpic():          #保存相关图片
    pcilists = findimg(url)
    for i in range(len(piclists)):
        html = openurl(piclists[i])        #依次读取图片地址
        file = str(i)+'.jpg'     #新建图片文件
        with open(file,'wb') as f:
            f.write(html)        #将读取的图片以二进制存入文件
            
if __name__ == '__main__':
    savingpic()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 16:02:45 | 显示全部楼层
你想让他传什么你就怎么写啊???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 16:09:37 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-27 16:02
你想让他传什么你就怎么写啊???

我对这个各个函数之间的()的参数怎么写一点也不懂,求帮忙更正,我按照正确的理解一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 16:10:20 | 显示全部楼层
熊猫打字 发表于 2020-4-27 16:09
我对这个各个函数之间的()的参数怎么写一点也不懂,求帮忙更正,我按照正确的理解一下

你自己写的函数你不知道参数是做什么用的?那我怎么知道?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 16:11:31 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-27 16:10
你自己写的函数你不知道参数是做什么用的?那我怎么知道?

好吧,我再回去学学函数那一节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 20:55:21 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-27 16:10
你自己写的函数你不知道参数是做什么用的?那我怎么知道?

参数秀儿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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