|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import urllib.request
import os
import random
def url_open(url):
req=urllib.request.Request(url) #生成一个url对象
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')
response=urllib.request.urlopen(url)
html=response.read()
return html
def get_page(url):
html=url_open(url).decode('utf-8')
a=html.find('current-comment-page')+23 #找到数字的起始位置,返回的是索引坐标
b=html.find(']',a) #从a开始找到方括号并返回它的索引值
return (html[a:b])
def find_imgs(url):
html=url_open(url).decode('utf-8') #把所有图片的地址拷贝到列表里
img_addrs=[]
a=html.find('img src=')
while a!=-1:
b=html.find('.jpg',a,a+255)
if b!=-1: #找到jpg 有一个索引值了
img_addrs.append(html[a+9:b+4])
else:
b=a+9
a=html.find('img src=',b)
return img_addrs
def save_imgs(folder,img_addrs):
for each in img_addrs:
filename=each.split('/')[-1]
with open(filename,'wb') as f:
img=url_open(each)
f.write(img)
def download__mm(folder='OOXX',pages=10):
os.mkdir(folder)
os.chdir(folder)
url = 'http://jandan.net/pic/'
page_num=int(get_page(url))
for i in range(pages): #前10页
page_num-=i
page_url=url+'page-'+str(page_num)+'#comments'
img_addrs=find_imgs(page_url) #把图片的地址保存成一个列表然后返回
save_imgs(folder,img_addrs) #把图片保存起来
if __name__=='__main__':
download__mm()
####################这是OOXX从网上down图片的爬虫,出现一个错误。自己理解是一个图片格式被系统误认为是url了,求大神解决。##########################
下面是错误结果
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\图片爬虫.py", line 61, in <module>
download__mm()
File "C:\Users\Administrator\Desktop\图片爬虫.py", line 58, in download__mm
save_imgs(folder,img_addrs) #把图片保存起来
File "C:\Users\Administrator\Desktop\图片爬虫.py", line 44, in save_imgs
img=url_open(each)
File "C:\Users\Administrator\Desktop\图片爬虫.py", line 6, in url_open
req=urllib.request.Request(url) #生成一个url对象
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\urllib\request.py", line 329, in __init__
self.full_url = url
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\urllib\request.py", line 355, in full_url
self._parse()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\urllib\request.py", line 384, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '//wx1.sinaimg.cn/mw600/745c3895ly1fjvl0a6zsjj20sg0nrak3.jpg'
求大神解答
def find_imgs(url)方法下的 img_addrs.append(html[a+9:b+4])改为 img_addrs.append('http:' + html[a+9:b+4])
|
|