#coding=utf-8
import urllib2
import os
import time
import random
def url_open(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
'''
proxies=[
'60.191.156.134:3128'
]
proxy=random.choice(proxies)
proxy_support=urllib2.ProxyHandler({'http':proxy})
opener=urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
'''
req=urllib2.Request(
url=url,
headers=headers
)
content = urllib2.urlopen(req).read()
time.sleep(5)
return content
def get_page(url):
html=url_open(url).decode('utf-8')
#寻找current-comment-page的位置,返回的是位置的具体位置,是一个数,数的是每个字节。
# +23 是在加上current-comment-page">[ 然后得到后面的数字的位置
a=html.find(r'current-comment-page')+23
# 意思是从a位置开始向后面寻找] 字符 并记录位置
b=html.find(']',a)
# 返回从a 到 b 中的数据
return html[a:b]
def find_imgs(url):
html=url_open(url).decode('utf-8')
img_addrs=[]
a=html.find(r'img src=')
while a!=-1:
b=html.find(r'.jpg',a,a+255)
if b!=-1:
img_addrs.append(html[a+9:b+4])
else:
b=a+9
a=html.find(r'img src=',b)
return img_addrs
def save_imgs(folder,img_addrs):
for each in img_addrs:
filename=each.split('/')[-1]
print "-------------------------------save part -------------------------------------"
# open 是打开网页,然后用''wb二进制 ,
#使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。
print each
with open(filename,'wb') as f: #as相当与赋值号
#打开一个图片网页,然后赋值给img
img=url_open(each)
f.write(img)
'''
>>> u = "www.doiido.com.cn"
#使用默认分隔符
>>> print u.split()
['www.doiido.com.cn']
#以"."为分隔符
>>> print u.split('.')
['www', 'doiido', 'com', 'cn']
'''
'''
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
>>> f = open('/Users/michael/test.txt', 'r')
就行打开一个网页或者文件一样
try:
f = open('/path/to/file', 'r')
print f.read()
finally:
if f:
f.close()
'''
def meizitu(folder='ooxx',pages=10):
if(os.path.exists(r'C:\Users\Administrator\Desktop\test\ooxx')==False):
os.mkdir(folder)
os.chdir(folder)
url=r'http://jandan.net/ooxx/'
page_num=int(get_page(url))
for i in range(pages):
page_num -=i
page_url=url + r'page-'+str(page_num)+r"#comments"
img_addrs=find_imgs(page_url)
save_imgs(folder,img_addrs)
if __name__ == '__main__':
meizitu()
爬虫爬虫学习: 爬取网页图片
最新推荐文章于 2023-08-21 08:00:00 发布