Python
我们就爬一下一号店女装的图片吧... ... 环境 py3.6
import urllib.request import re import os #将页面装换成字符串 def registerUrlStr(url): # 模拟请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"} # 设置请求体 req = urllib.request.Request(url, headers=headers) reponse = urllib.request.urlopen(req) HTML = reponse.read().decode("utf-8") return HTML
封装方法 将页面转换成字符串。 注意:有事会报错 说解析不了,没关系换网址.....
headers : 是360浏览器的请求头
方法作用:放入网页url 返回数据字符串。
为什么一定要转换成字符串呢?因为下边我们用正则表达式时,传入要寻找的对象必须是字符串类型数据。
if __name__ == '__main__': url = r"http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/" (网页地址) path = r"E:\WorkSpace\Day10\image" (图片存储路径) htmlData = registerUrlStr(url) # writerStr(path, htmlData) # 图片的正则表达式 pat1 = r'<img src="//(.*?)"/>' re_joke = re.compile(pat1, re.S) imageList = re_joke.findall(htmlData) print(len(imageList)) print(imageList) # #下载图片存储 num = 1 for imageurl in imageList: try: path1 = os.path.join(path, str(num)+".jpg") num += 1 #把图片下载到本地储存 urllib.request.urlretrieve("http://" + imageurl, filename=path1) except ValueError as e: continue
这个小工能的难点在于数据的分析。也就是图片正则表达式的分析。 我们来看一下一号店女装网页,按F12进入开发者模式
再来看一下 图片的正则表达式:
pat1 = r'<img src="//(.*?)"/>'
写法自行体会。
你只需要改改你的path路径就能下载保存图片了