lyton_online 2018-10-09 18:58 采纳率: 0%
浏览 1799

为什么python爬虫程序下载的图片不正确?

import re
import urllib.request

def open_url(url):

user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
headers={'User-Agent':user_agent,'Referer':'http://www.mmjpg.com/mm/1317'}
reg=urllib.request.Request(url,headers)
response=urllib.request.urlopen(url)
html=response.read()

 return html

def craw(url,page):
html=open_url(url)
html1=str(html)

pat1='<div class="content" id="content">.+?<div class="page" id="page">'

result1=re.compile(pat1).findall(html1)
result1=result1[0]

pat2='<div class="content" id="content"><a href=".*"><img src="(.+?.jpg)"'  

imagelist=re.compile(pat2).findall(result1)

  for each in imagelist:
            print(each)       #能够正确抓取图片地址
    imgname=each.split('/')[-1]
    fandler=open('D:/files/download/'+imgname,'wb')
    data=open_url(each)
    fandler.write(data)
    fandler.close()

for i in range(1,49):
url='http://www.mmjpg.com/mm/1317/'+str(i)
craw(url,i)

爬虫能够正确抓取图片的地址,但下载在电脑上的图片如下:
图片说明

请教高手原因出在哪?

展开全部

  • 写回答

1条回答 默认 最新

  • lyhsdy 2018-10-09 19:45
    关注

    图片地址做了反爬,你直接复制图片地址在浏览器上打开就是你下载下来的图片,所以你需要在请求图片网址时,data=open_url(each) 你的headers错误了,应该是headers={'User-Agent':user_agent,'Referer':'http://www.mmjpg.com/mm/1317''+str(i)}

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 宝塔面板一键迁移使用不了
  • ¥15 求一个按键录像存储到内存卡的ESP32CAM代码
  • ¥15 如何单独修改下列canvas推箱子代码target参数?,插入图片代替其形状,就是哪个绿色的圆圈每关用插入的图片替代
  • ¥20 四叉树的创建和输出问题
  • ¥15 javaweb连接数据库,jsp文件加载不出来
  • ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写