马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 boat_1987 于 2017-2-14 16:11 编辑
我写了和小甲鱼老师一样的程序,一直报错 HTTP Error 403: Forbidden。这是必须要用代理才行吗?
import urllib.request
import os
import random
def url_open(url):
req=urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36')
'''
proxies=['111.121.210.159:9999','182.202.115.145:9999','60.214.241.31:9999','39.170.245.115:8123']
proxy=random.choice(proxies)
proxy_support=urllib.request.ProxyHandler({'http':proxy})
opener=urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response=urllib.request.urlopen(url)
html=response.read()
return html
def get_page(url):#获取首页中隐藏的页码
#首先打开网页,并做一定的隐藏(修改add_header)
html=url_open(url).decode('utf-8')
#然后在读取的html中查找到所需的页码
a=html.find('current-comment-page')+23#c的编号为0,第23个编号为审查元素中的页码的第一个数字
b=html.find(']',a)
print(html[a:b])
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:#b=-1表示没有find到
img_addrs.append('http:'+html[a+9:b+4])
print('http:'+html[a+9:b+4])
else:
b=a+9
a=html.find('img src=',b)
return img_addrs
def save_imgs(floder,img_addrs):#将图片保存在文件夹
for each in img_addrs:
print(each)
filename=each.split('/')[-1]
with open(filename,'wb') as f:
img=url_open(each)#打开图片的链接
f.write(img)
def download_mm(floder='OOXX',pages=5):
os.mkdir(floder)
os.chdir(floder)
url='http://jandan.net/ooxx/'
page_num=int(get_page(url))#获取首页中隐藏的页码
for i in range(page_num):
page_num-=i
page_url=url+'page-'+str(page_num)#页面的网址
img_addrs=find_imgs(page_url)#获取页面中图片的地址
save_imgs(floder,img_addrs)#将图片保存在文件夹
if __name__=='__main__':
download_mm()
|