urllib2.URLError: ошибка urlopen

В соответствии с этим кодом ниже я сохранил номер запроса на перенос в текстовом файле, и я хочу загрузить его на URL-адрес, который находится в моем коде, но я получил ошибку, упомянутую в заголовке.

import urllib2 import json import httplib def event_spider(org,repo): try: nbPrequest_reopened=0 #number of pull requests reopened pages=1 while pages<=3: headers={'User-Agent':'Mozilla/5.0(X11;Linux i686)', 'Authorization':'token 516ed78e0521c6b25d9726ad51fa63841d019936',} read_file=open('C:\Python27\pullRequest_number.txt','r+') rf=read_file.readlines() for number in rf: url_event=('https://api.github.com/repos/'+ org +'/'+ repo + '/issues/'+ str(number) +'/events?per_page=99&state=all&page='+str(pages)) event_Request=urllib2.Request(url_event,headers=headers) eventObject=urllib2.urlopen(event_Request) eventData=json.load(eventObject) for element in eventData: if element['event']=='reopened': nbPrequest_reopened+=1 #print url_event pages+=1 except httplib.BadStatusLine: pass print 'The number of pull request reopened is %s ' %(nbPrequest_reopened) if __name__=='__main__': event_spider('rails','rails') 

Traceback (последний последний вызов):

  File "C:/Users/ABDILLAH/PycharmProjects/Pandas_data_analysis/event_spider.py", line 27, in <module> event_spider('rails','rails') File "C:/Users/ABDILLAH/PycharmProjects/Pandas_data_analysis/event_spider.py", line 16, in event_spider eventObject=urllib2.urlopen(event_Request) File "C:\Python27\lib\urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "C:\Python27\lib\urllib2.py", line 427, in open req = meth(req) File "C:\Python27\lib\urllib2.py", line 1126, in do_request_ raise URLError('no host given') urllib2.URLError: <urlopen error no host given> 

Может ли кто-нибудь помочь мне решить эту проблему? Благодарю.

2 Solutions collect form web for “urllib2.URLError: ошибка urlopen”

Для этого есть легкое решение. Я взял его с https://github.com/rg3/youtube-dl/pull/11892/files (у проекта youtube-dl была эта проблема тоже).

Исправлена ​​ошибка в pytube (я попытаюсь загрузить запрос на загрузку к сегодняшнему дню): В файле api.py вы должны изменить 2 строки кода. Во-первых, под функцией _get_cipher вы должны изменить строку:

 reg_exp = re.compile(r'\.sig\|\|([a-zA-Z0-9$]+)\(') 

чтобы:

 reg_exp = re.compile(r'"signature",\s?([a-zA-Z0-9$]+)\(') 

Во-вторых, под функцией from_url вы должны изменить эту строку:

 js_url = "http:" + video_data.get("assets", {}).get("js") 

к этому коду:

 js_url = '' js_partial_url = video_data.get("assets", {}).get("js") if js_partial_url.startswith('//'): js_url = 'http:' + js_partial_url elif js_partial_url.startswith('/'): js_url = 'https://youtube.com' + js_partial_url 

Проблема заключается в том, чтобы принимать данные из файла.

read_file.readlines() возвращает список, содержащий все строки в файле с символом новой строки в конце каждой строки.

Когда вы создаете URL-адрес,

 url_event=('https://api.github.com/repos/'+ org +'/'+ repo + '/issues/'+ str(number) +.....) 

Здесь number будет иметь \n в конце.

Поэтому созданный url не будет правильным.

Лучший подход заключается в следующем

Прочитайте весь файл и разделите строки, используя str.splitlines

 rf = read_file.read().splitlines() 

Используя splitlines() вы получите список строк в файле без \n в конце.

Таким образом, не будет указанной проблемы с number

  • urllib2 - отправить запрос
  • ValueError: неизвестный тип URL
  • python urllib2 - подождите, пока страница закончит загрузку / перенаправление перед очисткой?
  • Извлечь содержимое статьи новостей из сохраненных .html-страниц
  • urllib2 с файлами cookie
  • robobrowser не будет изменять файлы cookie
  • открыть url из pythonanywhere
  • ошибка urlopen 10045, «адрес уже используется» при загрузке в Python 2.5 на Windows
  • Python - лучший язык программирования в мире.