鱼C论坛

 找回密码
 立即注册
查看: 2248|回复: 4

[已解决]关于小甲鱼Python爬虫视频的求助

[复制链接]
发表于 2017-4-14 00:43:25 | 显示全部楼层 |阅读模式

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

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

x
我看着小甲鱼的Python056视频,就是那个爬取妹子图的视频写了以下程序(大部分都是和小甲鱼的一样的)
可是在运行的时候出现了截图里的错误,希望能有大神能帮我一下
(第一次发帖求助,发帖格式有什么不对的地方,望雅正。)

import os
import urllib.request

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3000.4 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+256)
        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_pic(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 -= 1
        page_url = url + 'page-' + str(page_num) + "#comments"
        img_addrs = find_imgs(page_url)
        save_imgs(folder,img_addrs)

if __name__ == '__main__':
    download_pic()
最佳答案
2017-4-14 00:58:27
save_imgs函数下的filename是//wx4.xxxx.xxx格式的,所以需要在前面加上'http:',格式需要是http://wx4.xxxx.xxx的样子,urlopen才认识

这是出现的错误,萌新看不懂呀。。。

这是出现的错误,萌新看不懂呀。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-14 00:58:27 | 显示全部楼层    本楼为最佳答案   
save_imgs函数下的filename是//wx4.xxxx.xxx格式的,所以需要在前面加上'http:',格式需要是http://wx4.xxxx.xxx的样子,urlopen才认识
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-4-14 13:08:19 | 显示全部楼层
handsome_walker 发表于 2017-4-14 00:58
save_imgs函数下的filename是//wx4.xxxx.xxx格式的,所以需要在前面加上'http:',格式需要是http://wx4.xxx ...

你好!首先非常感谢你能回答我提出的问题!但是,本人可能比较愚钝,这里的URLopen不是打开的img_addrsl里的地址的吗?这里并没有打开filename吧?filename只是储存时的文件名称不是么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-14 13:16:42 | 显示全部楼层
handsome_walker 发表于 2017-4-14 00:58
save_imgs函数下的filename是//wx4.xxxx.xxx格式的,所以需要在前面加上'http:',格式需要是http://wx4.xxx ...

哎呀,谢谢你的赐教,我已经弄明白了,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 16:10:53 | 显示全部楼层
我在补充点吧,自己试了好久
  1. def save_imgs(floder,img_addrs):
  2.     for each in img_addrs:
  3.         filename = each.split('/')[-1]
  4.         with open(filename,'wb') as f:
  5.             img = url_open('http:'+each)
  6.             f.write(img)
复制代码

这是修改后的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-6 02:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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