鱼C论坛

 找回密码
 立即注册
查看: 1387|回复: 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】这个网站里,所有帖子里的图片。
  1. import urllib.request as ur
  2. import re
  3. import chardet

  4. def openurl(url):                     #打开网页的函数
  5.     req = ur.Request(url)
  6.     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')
  7.     response = ur.urlopen(req)
  8.     html = response.read()
  9.     return html

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

  17. def getpageurl(url):                    #获取要爬取论坛下所有帖子的网址
  18.     url = 'https://www.论坛主版面.com'              #假如这个是某论坛一个板块,也就是要爬取的网址
  19.     htmlcode = encodeurl(url)        #对该网页进行解码
  20.     a = r'查找该版下所有的帖子链接的表达式正则表达式'           #获取要爬取论坛下所有帖子的网址
  21.     pageurls=[]
  22.     pages = re.findall(a,htmlcode)              #将帖子网址存入列表
  23.     return pages
  24.    
  25. def findimg(url):            #获取帖子里所有图片的网址
  26.     pages=getpageurl(url)
  27.     for each in pageurls:
  28.         htmlcode = encodeurl(each)          #打卡帖子并解码
  29.         b = r"查找某帖子里图片的正则表达式"          #查找某帖子里图片的正则表达式
  30.         piclists = re.findall(b,htmlcode)         #将帖子里图片地址存入列表
  31.     return piclists
  32.    
  33. def savingpic():          #保存相关图片
  34.     pcilists = findimg(url)
  35.     for i in range(len(piclists)):
  36.         html = openurl(piclists[i])        #依次读取图片地址
  37.         file = str(i)+'.jpg'     #新建图片文件
  38.         with open(file,'wb') as f:
  39.             f.write(html)        #将读取的图片以二进制存入文件
  40.             
  41. if __name__ == '__main__':
  42.     savingpic()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 16:02:45 | 显示全部楼层
你想让他传什么你就怎么写啊???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我对这个各个函数之间的()的参数怎么写一点也不懂,求帮忙更正,我按照正确的理解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你自己写的函数你不知道参数是做什么用的?那我怎么知道?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好吧,我再回去学学函数那一节
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

参数秀儿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 11:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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