马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
|