|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
看完第56讲,自己按照小甲鱼的思路写了一个爬妹子图(http://www.meizitu.com/)的时候,提示urllib.error.HTTPError: HTTP Error 403: Forbidden
度娘查到的都说加User-Agent,但是代码里面本来就有啊,定义的其他函数都测试过了可以运行,到保存的时候就会出这个错误,第一次自己写,
我的思路是只爬第一个页面的,第一个页面很多小图,获取每个小图对应的超链接后进入对应连接,获取每个链接内所有图片的地址,最后调用save函数保存,求各位大神指点,代码如下:
- import urllib.request
- import os
- import re
- import time
- import random
- def url_open(url):
- req = urllib.request.Request(url)
- req.add_header('User-Agent',
- 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER')
- response = urllib.request.urlopen(url)
- html = response.read()
- return html
- def get_page(url): # 获取第一页中所有超链接
- html = url_open(url).decode('gb2312', 'ignore')
- addrs = []
- addrs = re.findall(r"http://www.meizitu.com/a/\d\d\d\d\.html", html)
- # print('get_page被调用', addrs)
- # print('共有%d个元素' % len(addrs))
- return addrs
- def get_img_url(urllist): # 获取每一超链接中所有图片地址
- img_url = []
- for each in urllist:
- html = url_open(each).decode('gb2312', 'ignore')
- temp = re.findall('http://mm.chinasareview.com/wp-content/uploads/2017a/08/\d\d/\d\d\.jpg', html)
- for i in temp:
- img_url.append(i)
- print('调用get_img_url')
- print('get_img_url获取的地址有:', img_url)
- return img_url
- def save(img_url):
- for each in img_url:
- print('each is ', each)
- filename = "".join('%s' % i for i in (each.split('/')[5:9]))
- print('文件名是:', filename)
- with open(filename, 'wb') as f:
- img = url_open(each)
- f.write(img)
- def download(folder='mm', pages=10):
- url = 'http://www.meizitu.com/a/more_1.html'
- os.mkdir(folder)
- os.chdir(folder)
- urllist = get_page(url) # 获取第一页中所有超链接
- img_url = get_img_url(urllist) # 获取每个超链接中所有图片地址
- save(img_url)
- if __name__ == '__main__':
- download()
复制代码
我错了。
|
|