您的位置:首页 > 编程语言 > Python开发

Python爬煎蛋网的图片——老司机的第一步

2017-05-17 10:53 295 查看
最近一直在看廖大的教程,但是看着看着,我好无聊啊,于是就去找了一些煎蛋(简单)的爬虫小知识,意外的打开了新世界的大门。啊哈,这下安逸咯~

煎蛋说下代码

这个是主程序,可以看到链接以及页码,以及启动函数
star()


if __name__=='__main__':
url = 'http://jandan.net/ooxx/page-1#comments'
pages = 58
start()


这个是
star()
函数,我们对链接进行页码的增加,同时通过函数
open_url()
获取每页的资源,且通过函数
get_img()
对图片进行本地化保存

def start():
for j in range(1,pages+1):
url2 = url

url2 = url2[:28]+str(j)+url[29:]

print(url2)

get_img(open_url(url2))

print('已经爬去取到第'+str(j) +'页')


这个是
open_url()
函数

def open_url(url2):
#请求
request = urllib.request.Request(url2)
#响应
response = urllib.request.urlopen(request)

data = response.read()
#转码
data = data.decode('utf-8')

return data


这个是
get_img()
函数,里面
saveFile()
这个函数是对把图标保存到本地。还有这个正则表达式,我不会,我抄的,大意我懂,但是写不出来- - 不过有讲正则的,你们可以搜下简书上的正则表达式文章

def get_img(html):

# 从网页源代码中筛选出图片的链接
p = re.compile(r'src="([^"]+\.jpg)"')

imglist = p.findall(html)

for each in set(imglist):

# 拼接链接
each = 'https:' + each

print(each)

try:
# 保存到本地
urllib.request.urlretrieve(each, saveFile(each))
except:
print('失败')


最后一个函数
saveFile()


def saveFile(path):
#检测当前路径的有效性
if not os.path.isdir(targetPath):
os.mkdir(targetPath)

#设置每个图片的路径
pos = path.rindex('/')
t = os.path.join(targetPath,path[pos+1:])
return t


当然还有头文件

import urllib.request,re,os

#本地保存路径 这个写你们自己的路径就行了
targetPath = "/Users/wangshengquan/Pictures/PythonImage"






最后是全部代码

#!/usr/bin/env python3
# _*_ coding: utf-8 _*_

import urllib.request,re,os

#本地保存路径
targetPath = "/Users/wangshengquan/Pictures/PythonImage"

def saveFile(path): #检测当前路径的有效性 if not os.path.isdir(targetPath): os.mkdir(targetPath) #设置每个图片的路径 pos = path.rindex('/') t = os.path.join(targetPath,path[pos+1:]) return t

def open_url(url2): #请求 request = urllib.request.Request(url2) #响应 response = urllib.request.urlopen(request) data = response.read() #转码 data = data.decode('utf-8') return data

def get_img(html): # 从网页源代码中筛选出图片的链接 p = re.compile(r'src="([^"]+\.jpg)"') imglist = p.findall(html) for each in set(imglist): # 拼接链接 each = 'https:' + each print(each) try: # 保存到本地 urllib.request.urlretrieve(each, saveFile(each)) except: print('失败')

def start(): for j in range(1,pages+1): url2 = url url2 = url2[:28]+str(j)+url[29:] print(url2) get_img(open_url(url2)) print('已经爬去取到第'+str(j) +'页')

if __name__=='__main__': url = 'http://jandan.net/ooxx/page-1#comments' pages = 58 start()


Python有着丰富的第三方,确实很方便,而且很简洁,接下来的话,如果可以的话,我希望自己能够继续磨炼自己的技术,向tumblr进攻~

如果你们看Python实在无聊的话,可以找些有意思的网站,激发自己的学习欲望,嗯嗯,接下来我要努力提示自己,早日掌握代理以及爬隐藏视频连接的技术,早日推到tumblr~

推荐大神

LEONYao
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫