2016-09-15 11 views
0

マイコード:urllib.error.HTTPError:HTTPエラー403:禁断のPython

import sqlite3, os, urllib.request 
from xml.dom import minidom 

if os.path.exists("data.db"): 
    con = sqlite3.connect("data.db") 
    cursor = con.cursor() 
    sql = "SELECT * FROM data WHERE test= '123'" 
    cursor.execute(sql) 
else: 
    print("ERROR") 

for dsatz in cursor: 
    #print(dsatz) 
    link = 'http://test.org/publication/' + dsatz[0] + '' + dsatz[1] +'/bib' 
    #print(link) 

    web_data = urllib.request.urlopen(link) 
    xmldoc = minidom.parse(web_data) 

    di = xmldoc.getElementsByTagName("document-id")[:1] 

    for x in di: 
     publicationcountry = x.getElementsByTagName("country")[0].firstChild.data 
     publicationdocnumber = x.getElementsByTagName("doc-number")[0].firstChild.data 
     punlicationkind = x.getElementsByTagName("kind")[0].firstChild.data 
     publicationdate = x.getElementsByTagName("date")[0].firstChild.data  

     sql = "INSERT INTO link_xml_data VALUES('" \ 
     + publicationcountry + "', '" \ 
     + str(publicationdocnumber) + "', '" \ 
     + punlicationkind + "')" 

     con.close() 

しかし、私はエラーを取得する15個のリンクのように後:私は、追加または変更する必要がありますどのような

Traceback (most recent call last): 
    File "C:\Users\j\3.py", line 34, in <module> 
    web_data = urllib.request.urlopen(link) 
    File "C:\Users\j\Python35-32\lib\urllib\request.py", line 163, in urlopen 
    return opener.open(url, data, timeout) 
    File "C:\Users\j\Python35-32\lib\urllib\request.py", line 472, in open 
    response = meth(req, response) 
    File "C:\Users\j\Python35-32\lib\urllib\request.py", line 582, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "C:\Users\j\Python35-32\lib\urllib\request.py", line 510, in error 
    return self._call_chain(*args) 
    File "C:\Users\j\Python35-32\lib\urllib\request.py", line 444, in _call_chain 
    result = func(*args) 
    File "C:\Users\j\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

ウェブサーバーからリンクが禁止されていると伝えられています。おそらくあなたのコードに間違いはありません。

一部のリンクは常に機能し、他のリンクは常に失敗するか、パターンは時間の経過とともに変化しますか?

403 Forbiddenレスポンスを取得した後で、以前の正常なリンクの1つを再度リクエストしてみましたか?

おそらく、サーバーが最終的にあなたをウェブスクレーパーとして認識して、離れるように指示しているのでしょうか?

関連する問題