鱼C论坛

 找回密码
 立即注册
查看: 20279|回复: 26

刚学到爬虫XXOO,遇到403forbidden

[复制链接]
发表于 2015-6-11 21:20:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面是代码,跟着小甲鱼编的,已经添加header了,不知道为什么煎蛋还是把我禁了  难道要用代理??
请问怎么解决~??

  1. import urllib.request
  2. import os

  3. def url_open(url):
  4.     req = urllib.request.Request(url)
  5.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36')
  6.     response = urllib.request.urlopen(url)
  7.     html = response.read()

  8.     return html
  9.    
  10. def get_page(url):
  11.     html = url_open(url).decode('utf-8')
  12.    
  13.     a = html.find('current-comment-page') + 23
  14.     b = html.find(']',a)

  15.     return html[a:b]
  16.                   
  17.    
  18. def find_imgs(url):
  19.     html = url_open(url).decode('utf-8')
  20.     img_addrs = []

  21.     a = html.find('img src=')

  22.     while a != -1:
  23.         b = html.find('.jpg',a,a +255)
  24.         if b !=-1:
  25.             img_addrs.append(html[a+9:b+4])
  26.         else:
  27.             b = a +9
  28.             
  29.         a = html.find('img src=',b)

  30.     return img_addrs
  31.    
  32. def save_imgs(folder, img_addrs):
  33.     for each in img_addrs:
  34.         filename = each.split('/')[-1]
  35.         with open(filename,'wb') as f:
  36.             img =url_open(each)
  37.             f.write(img)

  38.    
  39. def download_mm(folder='OOXX',pages=10):
  40.     os.mkdir(folder)
  41.     os.chdir(folder)

  42.     url = 'http://jandan.net/ooxx/'
  43.     page_num = int(get_page(url))

  44.     for i in range(pages):
  45.         page_num -= i
  46.         page_url = url + 'page-' + str(page_num) + '#comments'
  47.         img_addrs = find_imgs(page_url)
  48.         save_imgs(img_addrs)

  49. if __name__ == '__main__':
  50.     download_mm()
复制代码

这是错误信息:
Traceback (most recent call last):
  File "C:/Python34/testpython/爬煎蛋的妹纸.py", line 60, in <module>
    download_mm()
  File "C:/Python34/testpython/爬煎蛋的妹纸.py", line 51, in download_mm
    page_num = int(get_page(url))
  File "C:/Python34/testpython/爬煎蛋的妹纸.py", line 13, in get_page
    html = url_open(url).decode('utf-8')
  File "C:/Python34/testpython/爬煎蛋的妹纸.py", line 7, in url_open
    response = urllib.request.urlopen(url)
  File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python34\lib\urllib\request.py", line 469, in open
    response = meth(req, response)
  File "C:\Python34\lib\urllib\request.py", line 579, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python34\lib\urllib\request.py", line 507, in error
    return self._call_chain(*args)
  File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain
    result = func(*args)
  File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-6-13 13:07:23 | 显示全部楼层
:cry自己顶
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-14 16:44:51 | 显示全部楼层
  response = urllib.request.urlopen(req)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-1 21:52:59 | 显示全部楼层
mark 煎蛋被爬得太多了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-2 20:22:45 | 显示全部楼层
小甲鱼的课太吸引人,大家都来爬煎蛋,所以煎蛋把爬虫封了…
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-24 16:45:42 | 显示全部楼层
data=None
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'}

req=urllib.request.Request(url_meizi,data,headers)

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-25 01:18:21 | 显示全部楼层
戴宇轩 发表于 2015-8-2 20:22
小甲鱼的课太吸引人,大家都来爬煎蛋,所以煎蛋把爬虫封了…


是的……后来煎蛋封了爬虫……

大家还是换个对象学习吧,一般服务器都不欢迎爬虫“光临”的~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-25 10:52:22 | 显示全部楼层
小甲鱼 发表于 2015-8-25 01:18
是的……后来煎蛋封了爬虫……

大家还是换个对象学习吧,一般服务器都不欢迎爬虫“光临”的~

同样发现这个问题,没法爬妹子图了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-26 11:01:54 | 显示全部楼层
怎么解决的,我也遇到这样的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-26 11:17:15 | 显示全部楼层
import urllib.request

data=None
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'}
req=urllib.request.Request('http://jandan.net/ooxx',data,headers)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')

a = html.find('current-comment-page') + 23
b = html.find(']',a)
print(html[a:b])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-8-26 11:20:43 | 显示全部楼层
可以通过
QQ图片20150826112023.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-15 21:17:15 | 显示全部楼层
用10楼的方法解决了,很不错
不过我的图片保存,打开不了,显示文件可能已损坏
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 09:46:29 | 显示全部楼层
小甲鱼 发表于 2015-8-25 01:18
是的……后来煎蛋封了爬虫……

大家还是换个对象学习吧,一般服务器都不欢迎爬虫“光临”的~

此种办法有解么?现在大部分网站都不喜欢爬虫吧,尤其是一些视频,音乐等一些站点。但这些东西又是最喜欢爬的。有解么,大湿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 23:27:33 | 显示全部楼层
249018563 发表于 2015-8-26 11:17
import urllib.request

data=None

大神,为什么我运行这个报错,你给看看呗?
  1. import urllib.request
  2. url='http://jandan.net/ooxx'
  3. data=None
  4. headers={
  5. 'Host': 'jandan.net',

  6. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0',

  7. 'Accept': '*/*',

  8. 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

  9. 'Accept-Encoding': 'gzip, deflate',

  10. 'X-Requested-With': 'XMLHttpRequest',

  11. 'Referer': 'http://jandan.net/ooxx',

  12. 'Cookie': '4022519986=7; _ga=GA1.2.43294716.1450792083; Hm_lvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1450792084; Hm_lpvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1450794167',

  13. 'x-forwarded-for': '114.114.114.114',

  14. 'Connection': 'keep-alive'

  15.     }
  16. req = urllib.request.Request(url,data,headers)
  17. response = urllib.request.urlopen(req)
  18. html = response.read().decode("utf-8")

  19. a=html.find('current-comment-page')+23
  20. b=html.find(']',a)

  21. print(html)
复制代码

报错信息

报错信息

报错信息
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-23 10:39:08 | 显示全部楼层
额,我知道为什么了,因为我在head里加了'Accept-Encoding': 'gzip, deflate'这句,哎,悲伤之情无法言表呀。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-17 23:02:19 | 显示全部楼层
淡淡的忧伤,还指望能下点ooxx图片呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-18 08:34:53 | 显示全部楼层
厉害啊,学到多少课,就可以煎蛋了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2016-2-18 15:29:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-7 11:19:36 | 显示全部楼层
感谢zxszx4,煎蛋网又可以爬虫了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-22 15:27:37 | 显示全部楼层
10楼的方法试了一下,还是不行。使用代理服务器,亲测可行:
proxy_support = urllib.request.ProxyHandler({'http':'222.220.113.4:3128'})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36')]
response = opener.open(url)
测试时间是2016年3月22日
1.PNG
2.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 20:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表