import re
import urllib.request as u
def getHtml(url):
page=u.urlopen(url)
html=page.read()
return html
def getImg(html):
reg=r"src=.*\.jpgwidth"
imgre=re.compile(reg)
imglist=re.findall(imgre,html)
html=getHtml("https://tieba.baidu.com/p/5814626777")
w=getImg(html)
print(w)
结果:目前可以下载网页源代码,提取jpg文件地址,下载jpg文件。
调试经历:
1.urllib模块在python3.6的软件上就没有,导入超找不到据说内置了,后来找到urllib.request.py 文件。可以正确导入了。
2.导入后使用urlopen应该打印整个页面源代码,也打印不成功。(出现如下字符,惆怅了1天 没弄明白放那里了,写此文时突然发现新东西了!!)
3.点击进去出现网页源代码了~~呵呵~~开心
4.又发现出现如下报错 调用的re 函数错误吧。~再试试 加油!
5.针对问题2 找相关资料发现
针对这个问题找网上资料结果发现将return html改为return html.decode('UTF-8')如下代码 可打印网页原代码。(猜测网页中有中文字符吧)
6.针对正则不成功 把语句imglist=re.findall(imgre,html)改为imglist=imgre.findall(html)
7.地址路径/ 改为、
8.根据下载部分变成函数print_ps 可以成功下载了
源代码目前如下:
import re
import os
import urllib.request as u
def getHtml(url):
page=u.urlopen(url)
html=page.read()
return html.decode('UTF-8')
def getImg(html):
reg=r'src="(.+?\.jpg)" size='
imgre=re.compile(reg) # 转化为一个正则对象
imglist=imgre.findall(html)#将需要的网址放在imglist中
# print(imglist)
return imglist
def print_ps(imglist):
x=0
path='C:/PycharmProjects/untitled1/and child learn phthon/ago/picture'
if not os.path.isdir(path):
os.makedirs(path)
paths=path+'\\'
for im in imglist:
u.urlretrieve(im,'{0}{1}.jpg'.format(paths,x))
x+=1
print("图片已经开始下载注意查看文件夹")
Html=getHtml("https://tieba.baidu.com/p/5814626777")
imglist=getImg(Html)
print_ps(imglist)