鱼C论坛

 找回密码
 立即注册
查看: 1993|回复: 10

[已解决]请前辈指点 python56课 爬不出来图

[复制链接]
发表于 2018-1-22 21:51:31 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 wow7jiao 于 2018-1-22 21:53 编辑

请问是不是煎鸡蛋加了反爬虫,把jandan.net/ooxx/page-82#comments前面的http://去掉料.所以Request无法解析??

  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.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')
  6.     response = urllib.request.urlopen(req)
  7.     html = response.read()
  8.     print(url)

  9.     return html


  10. def get_page(url):
  11.     html = url_open(url).decode('utf-8')



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

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

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

  29.         a = html.find('img src=', b)

  30.     ##return img_addrs
  31.     for each in img_addrs:
  32.         print(each)
  33.         
  34.         

  35. def save_imgs(folder, img_addrs):
  36.     pass
  37.    
  38. def download_mm(folder='OOXX', pages=10):
  39.     os.mkdir(folder)
  40.     os.chdir(folder)




  41.     url = "http://jandan.net/ooxx/"
  42.     page_num = int(get_page(url))

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

  48.         save_imgs(folder, img_addrs)


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




下面是出错提示:
>>>
= RESTART: C:\Users\Administrator\Desktop\056轮一只爬虫的自我修养4:OOXX\download_mm.py =
http://jandan.net/ooxx/
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\056轮一只爬虫的自我修养4:OOXX\download_mm.py", line 67, in <module>
    download_mm()
  File "C:\Users\Administrator\Desktop\056轮一只爬虫的自我修养4:OOXX\download_mm.py", line 61, in download_mm
    img_addrs = find_imgs(page_url)
  File "C:\Users\Administrator\Desktop\056轮一只爬虫的自我修养4:OOXX\download_mm.py", line 27, in find_imgs
    html = url_open(url).decode('utf-8')
  File "C:\Users\Administrator\Desktop\056轮一只爬虫的自我修养4:OOXX\download_mm.py", line 5, in url_open
    req = urllib.request.Request(url)
  File "D:\Python36\lib\urllib\request.py", line 329, in __init__
    self.full_url = url
  File "D:\Python36\lib\urllib\request.py", line 355, in full_url
    self._parse()
  File "D:\Python36\lib\urllib\request.py", line 384, in _parse
    raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: 'jandan.net/ooxx/page-82#comments'
最佳答案
2018-1-22 21:51:32

http://www.mzitu.com/ 网络有点卡,一直打错很抱歉

最佳答案

查看完整内容

http://www.mzitu.com/ 网络有点卡,一直打错很抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-22 21:51:32 | 显示全部楼层    本楼为最佳答案   

http://www.mzitu.com/ 网络有点卡,一直打错很抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-22 22:26:52 | 显示全部楼层
建议换网站
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 15:30:32 | 显示全部楼层
是的,去掉html=html[7:]就可以了
但是我find('img src')可以成功,find('.jpg')不能成功
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 20:38:10 | 显示全部楼层
讲道路,这个网站的图片已经加密了,你刚学爬虫的话就换个网站吧,以后再来挑战。http://www.meiztu.com/就很不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-24 11:53:52 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-1-23 20:38
讲道路,这个网站的图片已经加密了,你刚学爬虫的话就换个网站吧,以后再来挑战。http://www.meiztu.com/就 ...

你想说的是meizitu.com吧,我去爬了还是一样出问题
  1. import urllib.request
  2. import os
  3. import random



  4. def url_open(url):
  5.     req = urllib.request.Request(url)
  6.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')



  7.     response = urllib.request.urlopen(req)
  8.     html = response.read()

  9.     return html


  10. def get_page(url):
  11.     html = url_open(url).decode('utf-8')

  12.     a = html.find('thisclass') + 11
  13.     b = html.find('>', a)

  14.    

  15.     return html[a:b]


  16. def find_imgs(url):
  17.     html = url_open(url).decode('utf-8')
  18.     img_addrs = []

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

  20.     while a != -1:
  21.         b = html.find('.jpg', a, a+255)
  22.         if b != -1:
  23.             img_addrs.append(html[a+9:b+4])
  24.         else:
  25.             b = a + 9

  26.         a = html.find('img src=', b)

  27.     return img_addrs


  28. def save_imgs(folder, img_addrs):
  29.     for each in img_addrs:
  30.         filename = each.split('/')[-2]
  31.         with open(filename, 'wb') as f:
  32.             img = url_open(each)
  33.             f.write(img)


  34. def download_mm(folder='OOXX', pages=10):
  35.     os.mkdir(folder)
  36.     os.chdir(folder)

  37.     url = "www.meizitu.com/a/pure.html"
  38.     page_num = int(get_page(url))

  39.     for i in range(pages):
  40.         page_num += 1
  41.         page_url = 'www.meizitu.com/a/pure_' + str(page_num) + 'html'
  42.         img_addrs = find_imgs(page_url)
  43.         save_imgs(folder, img_addrs)

  44. if __name__ == '__main__':
  45.     download_mm()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 12:08:24 | 显示全部楼层
wow7jiao 发表于 2018-1-24 11:53
你想说的是meizitu.com吧,我去爬了还是一样出问题

网址打错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 12:10:04 | 显示全部楼层

不好意思是 mztu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 12:10:35 | 显示全部楼层

不好意思是 mztu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-24 13:02:15 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-1-24 12:11
http://www.mzitu.com/ 网络有点卡,一直打错很抱歉

图下来了,图片可以打开,内容很惊喜
  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.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')

  6.    
  7.     response = urllib.request.urlopen(req)
  8.     html = response.read()

  9.     return html




  10. def find_imgs(url):
  11.     html = url_open(url).decode('utf-8')
  12.     img_addrs = []

  13.     a = html.find('src=')

  14.     while a != -1:
  15.         b = html.find('.jpg', a, a+255)
  16.         if b != -1:
  17.             img_addrs.append(html[a+5:b+4])
  18.         else:
  19.             b = a + 9

  20.         a = html.find('src=', b)

  21.     return img_addrs


  22. def save_imgs(folder, img_addrs):
  23.     for each in img_addrs:
  24.         filename = each.split('/')[-1]
  25.         with open(filename, 'wb') as f:
  26.             img = url_open(each)
  27.             f.write(img)


  28. def download_mm(folder='OOXX', pages=10):
  29.     os.mkdir(folder)
  30.     os.chdir(folder)

  31.     url = "http://www.mzitu.com/mm/"
  32.     page_num = 1

  33.     for i in range(pages):
  34.         page_num += 1
  35.         page_url = url + 'page/' + str(page_num) + '/'
  36.         img_addrs = find_imgs(page_url)
  37.         save_imgs(folder, img_addrs)

  38. if __name__ == '__main__':
  39.     download_mm()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 13:30:13 | 显示全部楼层
wow7jiao 发表于 2018-1-24 13:02
图下来了,图片可以打开,内容很惊喜

还可以换一些网站发现更多的惊喜,后面可以尝试爬取小说,电影排行榜,视频等等。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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