鱼C论坛

 找回密码
 立即注册
查看: 2841|回复: 5

轮一只爬虫的自我修养4:OOXX

[复制链接]
发表于 2017-2-19 20:36:30 | 显示全部楼层 |阅读模式

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

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

x
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.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')


    response = urllib.request.urlopen(url)
    html = response.read()

    return html


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

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

    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:
            img_addrs.append(html[a+9:b+4])
        else:
            b = a + 9

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

    return img_addrs


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


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

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

    for i in range(pages):
        page_num -= i
        page_url = url + 'page-' + str(page_num) + '#comments'
        img_addrs = find_imgs(page_url)
        save_imgs(folder, img_addrs)

if __name__ == '__main__':
    download_mm()

系统反馈:
Traceback (most recent call last):
  File "C:\Users\Snofus\Desktop\download_mm.py", line 66, in <module>
    download_mm()
  File "C:\Users\Snofus\Desktop\download_mm.py", line 63, in download_mm
    save_imgs(folder, img_addrs)
  File "C:\Users\Snofus\Desktop\download_mm.py", line 48, in save_imgs
    img = url_open(each)
  File "C:\Users\Snofus\Desktop\download_mm.py", line 7, in url_open
    req = urllib.request.Request(url)
  File "E:\python\Python3.5.2\lib\urllib\request.py", line 269, in __init__
    self.full_url = url
  File "E:\python\Python3.5.2\lib\urllib\request.py", line 295, in full_url
    self._parse()
  File "E:\python\Python3.5.2\lib\urllib\request.py", line 324, in _parse
    raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '//wx2.sinaimg.cn/mw600/68f6e545ly1fcw1a1kdxzj20k00zkkbz.jpg'

敢问大神这是什么问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-18 01:09:06 | 显示全部楼层
本帖最后由 world_dog 于 2017-10-18 01:10 编辑

在每一个找到的地址前面加上 http:
TFBZ1G%QOXTXZ}7T{)[RYD7.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 15:08:19 | 显示全部楼层
加了http:都不管用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 16:44:40 | 显示全部楼层
煎蛋网图片已经加密了,刚入坑就不要爬了。
以后成老司机再试着破解爬取。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 18:40:12 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-3 16:44
煎蛋网图片已经加密了,刚入坑就不要爬了。
以后成老司机再试着破解爬取。

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




find 什么叫偏移?  如果 学正则表达式  是不是可以 代替  字符串 的内置方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 10:37:58 | 显示全部楼层
response = urllib.request.urlopen(req)
这样试试看看行不行,如果你直接用response = urllib.request.urlopen(url),那么前面的req的header就白加了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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