|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
复制代码
|
|