2016-10-25 12 views
0

サイトからHTMLコードを取得してファイルに書きたいと思っています。 httpサイトでうまく動作しますが、SSLリンクがあれば多くのエラーが発生します。どのようにそれに対処する任意のアイデア?PythonのhtttpsサイトからHTMLコンテンツを取得

from __future__ import print_function 
import io 
import os 
import re 
import ssl 
from urllib.request import urlopen 

    with io.open('words.txt', 'a',encoding="utf-8") as g: 
     url = "https://www.something.some" 
     html = urlopen(url).read() 
     print(html, file = g) 

ここで私はこのようにそれを行うだろうエラー

Traceback (most recent call last): 
    File "...\Desktop\mined.py", line 54, in <module> 
    html = urlopen(url).read() 
    File "...\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 163, in urlopen 
    return opener.open(url, data, timeout) 
    File "....\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 472, in open 
    response = meth(req, response) 
    File "...\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 582, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "...\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 510, in error 
    return self._call_chain(*args) 
    File "...\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 444, in _call_chain 
    result = func(*args) 
    File "...\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 590, in http_error_default 
    raise HTTPError(req.full_url, code, msg, hdrs, fp) 
urllib.error.HTTPError: HTTP Error 403: Forbidden 
+0

* ...多くのエラーが発生します。* - あなたの質問にエラーを含めると、実際に役立ちます。さらに、他の人が同じ問題を抱えていて、それをすでに解決している可能性は低いので、エラー文字列を使って検索するほうが良いでしょう。 –

+0

私はそれをエラーで更新します。そして、はい、私はそれらを検索するbeforを試みたが、ほとんどの場合、彼らはちょうどWebページのステータスをチェックして、私は望んでいないが、私はHTMLコンテンツをしたい – Vedad

+1

あなたが言うとき... _it httpサイトでうまく動作_...あなたは同じサイトを掻き回そうとしていますか? (つまり、「http://www.something.some」が動作し、「https://www.something.some」はできません)、または異なるサイト(異なるURL)であることを意味します。 ? '403' HTTPステータスコードはあなたが何かを見る許可を持っていないことを意味するので、通常はあなたがユーザー名/パスワードを正しく提供していないことを意味しますが、これは' http'と 'https'呼び出し。 – BorrajaX

答えて

0

import urllib 

resp = urllib.urlopen('https://somewebsite.com') # open url 
page = resp.read()        # copy website source to 'page' variable 
text_file = open("Output.txt", "w")    # open txt file 
text_file.write(page)       # insert website source into txt file 
text_file.close()        # close file 
0

urllib.error.HTTPError: HTTP Error 403: Forbidden

エラー403 Forbiddenあなたはサイトに成功したSSL接続を得たが、そのことを意味しウェブサーバーはあなたにコンテンツを提供することを明示的に拒否します。 おそらく、サーバーはhttpsでサイトにアクセスすることを望んでおらず、ブラウザを使用して同じURLにアクセスするときに同じエラーが発生する可能性があります。また、サーバーがまだhttps用に適切に構成されていない可能性があります。

ブラウザではなくスクリプトでは正確に同じURLにアクセスできるのであれば、User-Agentやその他のものに基づいてサーバーによって行われたフィルタリング(つまり、非ブラウザによるアクセスからの保護)が可能です。この場合、サイトの実際のURLを知っておくと便利です。

関連する問題