鱼C论坛

 找回密码
 立即注册
查看: 3982|回复: 13

[已解决]爬取网址后,图片保存不了

[复制链接]
发表于 2018-11-19 15:57:29 | 显示全部楼层 |阅读模式

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

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

x
煎蛋网爬不到图片地址,就用http://www.mmjpg.com/,来练手,可是图片地址是爬出来了,可是保存下来都是河蟹图,大佬帮我看看哪里出错了:
代码如下:
import urllib.request
import os
import random
def set_proxy():#设置代理
    ip_list = random.choice(['123.7.61.8:53281','42.48.118.106:50038','119.254.94.105:58999','61.138.33.20:808'])

    proxy_support = urllib.request.ProxyHandler({'https':random.choice(ip_list)})
    opener = urllib.request.build_opener(proxy_support)
    urllib.request.install_opener(opener)


def url_open(url):#设置headers打开网页并获得返回内容
    set_proxy()
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    return html

def get_address(html, mm_collect):#获取主网页下的子相册网址列表
    a = html.find('<div class="main">')
    b = html.find('<em class="info">共',a+255)
    html = html[a:b]
    a = html.find('<span class="title">')
    while a != -1:
        b = html.find('target',a)
        if b != -1:
            mm_collect.append(html[a+29:b-2])
        else:
            b = a+28
        a = html.find('<span class="title">', b)

def get_page(html):#获取子每个相册列表拥有页数
    a = html.find('没有了')
    if a == -1:
        a = html.find('上一篇')
    b = html.find('全部图片', a)
    html = html[a:b]
    a = html.find('<i></i>')+15
    b = html.find(r'</a>', a)
    html = html[a:b]
    a = html.find('>')+1
    html = int(html[a:b])
    return html

def open_mm(mm_collect,pic_address):#打开子相册,生成具体图片的地址列表
    for i in mm_collect:
        html = url_open(i).decode('utf-8')
        page = get_page(html)
        a = html.find('<div class="content" id="content">')
        b = html.find('.jpg')
        html = html[a+74:b+4]
        a = html.find('<img src=')+10
        html = html[a:b]
        pic_address.append(html)

        for p in range(2, 5):#page长度过长,自定义已减少运行时长
            url = i + r'/' + str(p)
            html = url_open(url).decode('utf-8')
            a = html.find('<div class="content" id="content">')
            b = html.find('.jpg')
            html = html[a+74:b+4]
            a = html.find('<img src=')+10
            html = html[a:b]
            pic_address.append(html)

def save_pic(adress):#将具体图片地址列表一一打开保存为图片
    num = 0
    for i in adress:
        print(i)
        html = url_open(i)
        file_name = 'pic_'+str(num)+'.jpg'
        num += 1
        with open(file_name, 'wb') as f:
            f.write(html)

def download_mm(folder = 'MMJPG', pages = 1):#主程序,文件下载保存
    os.mkdir(folder)
    os.chdir(folder)
    url = 'http://www.mmjpg.com/'
    html = url_open(url).decode('utf-8')
    pages = int(pages)
    mm_collect = []
    pic_address = []
    get_address(html, mm_collect)
    for i in range(2,pages+1):
        url = 'http://www.mmjpg.com/' + r'home/' + str(i)
        html = url_open(url).decode('utf-8')
        get_address(html, mm_collect)
    open_mm(mm_collect,pic_address)
    save_pic(pic_address)


if __name__ == '__main__':
    download_mm()
JR`~4$QT_TUGKE$REE6@K@G.png
最佳答案
2018-11-19 16:45:39
请求图片的时候,请求头缺了Referer参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-19 16:20:38 | 显示全部楼层
你把每个图片url输入到浏览器里看看就知道了,都是和谐图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-19 16:22:08 | 显示全部楼层
这种情况 ,你可以检查一下,提交的头文件增加一下这个网址。一般就可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:25:57 | 显示全部楼层
塔利班 发表于 2018-11-19 16:20
你把每个图片url输入到浏览器里看看就知道了,都是和谐图

http://fm.shiyunjj.com/2018/1538/1i9v.jpg
http://fm.shiyunjj.com/2018/1538/2iwj.jpg
http://fm.shiyunjj.com/2018/1538/3iq0.jpg
http://fm.shiyunjj.com/2018/1538/4ims.jpg
http://fm.shiyunjj.com/2018/1537/1i54.jpg
http://fm.shiyunjj.com/2018/1537/2ix5.jpg
http://fm.shiyunjj.com/2018/1537/3inf.jpg
http://fm.shiyunjj.com/2018/1537/4ias.jpg
http://fm.shiyunjj.com/2018/1536/1iz7.jpg
http://fm.shiyunjj.com/2018/1536/2ib1.jpg
http://fm.shiyunjj.com/2018/1536/3iaw.jpg
http://fm.shiyunjj.com/2018/1536/4ink.jpg
http://fm.shiyunjj.com/2018/1535/1ibw.jpg
http://fm.shiyunjj.com/2018/1535/2ipw.jpg
http://fm.shiyunjj.com/2018/1535/3i6m.jpg
大大我试了,中间有可以打开的,可是我连一张都保存不到全部河蟹图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:27:16 | 显示全部楼层
741712547 发表于 2018-11-19 16:22
这种情况 ,你可以检查一下,提交的头文件增加一下这个网址。一般就可以。

怎么个操作能,详细一点吗,我是萌新
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-19 16:28:35 | 显示全部楼层
实际图片url路径少了small/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:37:02 | 显示全部楼层
塔利班 发表于 2018-11-19 16:28
实际图片url路径少了small/

大大好,我是纯萌新,这个small/加哪里?还是有个什么说法,我看不懂,不好意思,能说说吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-19 16:42:09 | 显示全部楼层
你审查元素,看图片url,里面不是带small的么,你读取的网页源代码得到的图片url和实际的不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-19 16:45:39 | 显示全部楼层    本楼为最佳答案   
请求图片的时候,请求头缺了Referer参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:48:51 | 显示全部楼层
塔利班 发表于 2018-11-19 16:42
你审查元素,看图片url,里面不是带small的么,你读取的网页源代码得到的图片url和实际的不一样的

刚刚看了审查我要爬取的大图是不带small的,带small的好像是边上那些链接的小图片,我看了审查的图片确实没发现带small
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:49:53 | 显示全部楼层
塔利班 发表于 2018-11-19 16:42
你审查元素,看图片url,里面不是带small的么,你读取的网页源代码得到的图片url和实际的不一样的

我已经没办法传图了,这时网页审查的代码<img src="http://fm.shiyunjj.com/2018/1538/1i9v.jpg" data-img="http://fm.shiyunjj.com/2018/1538/1i9v.jpg" alt="模特菲菲极品套图修长美腿爱不释手">
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-19 16:53:58 | 显示全部楼层
小章郎 发表于 2018-11-19 16:49
我已经没办法传图了,这时网页审查的代码

嗯,你慢慢看吧,我还是少浏览点这类网站
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 16:59:19 | 显示全部楼层
塔利班 发表于 2018-11-19 16:53
嗯,你慢慢看吧,我还是少浏览点这类网站

哈哈,不好意思,或许你环境不允许,谢谢你了我找到原因了,请求头的问题,谢谢各位大大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-19 17:00:18 | 显示全部楼层
wongyusing 发表于 2018-11-19 16:45
请求图片的时候,请求头缺了Referer参数

谢谢大大,豁然开朗,请求头的缘故
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 09:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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