2017-10-03 3 views
1

私はnmgncp.comから壁紙をダウンロードするためにPythonでBs4を使用していました。 ただし、コードは16KBファイルしかダウンロードされませんが、コードは約300KBです。 私を助けてください。私もwget.downloadメソッドを試してみました。Pythonでフルファイルをダウンロードできない

PSは: - すべてのhttp://www.nmgncp.com/dark-wallpaper-1920x1080.html

from bs4 import BeautifulSoup 
import requests 
import datetime 
import time 
import re 
import wget 
import os 


url='http://www.nmgncp.com/dark-wallpaper-1920x1080.html' 

html=requests.get(url) 
soup=BeautifulSoup(html.text,"lxml") 
a = soup.findAll('img')[0].get('src') 
newurl='http://www.nmgncp.com/'+a 
print(newurl) 

response = requests.get(newurl) 
if response.status_code == 200: 
    with open("C:/Users/KD/Desktop/Python_practice/newwww.jpg", 'wb') as f: 
     f.write(response.content) 
+0

あなたはテキストエディタで 'newwww.jpg'を開いたとき、あなたは何を見ていますか? – arminb

+0

それは私にHTMLコードを与えます。問題は私がHTMLページに私をリダイレクトする私のクロムにnewurlを置く場合でもです。しかし、イメージソースを調べるとnewurlと同じになります。 @arminb –

+0

あなたはhtml文書をダウンロードしています。イメージのURLを探します(http://www.nmgncp.com/data/out/95/4351795-dark-wallpaper-1920x1080.jpg) – arminb

答えて

1

あなたの問題の原因は保護があるからです:画像ページにはリファラーが必要です。そうでない場合は、HTMLページにリダイレクトされます。固定

ソースコード:

from bs4 import BeautifulSoup 
import requests 
import datetime 
import time 
import re 
import wget 
import os 


url='http://www.nmgncp.com/dark-wallpaper-1920x1080.html' 

html=requests.get(url) 
soup=BeautifulSoup(html.text,"lxml") 
a = soup.findAll('img')[0].get('src') 
newurl='http://www.nmgncp.com'+a 
print(newurl) 

response = requests.get(newurl, headers={'referer': newurl}) 
if response.status_code == 200: 
    with open("C:/Users/KD/Desktop/Python_practice/newwww.jpg", 'wb') as f: 
     f.write(response.content) 
+0

ソリューションありがとう。 –

0

まず、HTML文書である - 私は

のWindows 10上のPython 3.6を使用していますと、ここに私のコード::です。次に、直接URL(例:http://www.nmgncp.com/data/out/95/4351795-dark-wallpaper-1920x1080.jpg)で画像をダウンロードしようとすると、HTML文書にリダイレクトされます。これはおそらくホスティング業者(nmgncp.com)がその画像への直接リンクを提供したくないからでしょう。彼は、HTTPリファラーを見て、それが正当であるかどうかを判断することによって、イメージが直接呼び出されたかどうかを確認することができます。この場合、あなたは直接URLの有効な呼び出し元であることをホスティング者が考えるように、もっと努力しなければなりません。

+0

ええ、私はそれを得るが、どのように私はそれを行うことができます。ホストをばかにする方法 –

関連する問題