2015-10-28 3 views
0

вот мой Python код, который я использую для извлечения Specific HTML из страницы ссылки Я посылаю в качестве параметра. Я использую BeautifulSoup. Этот код отлично работает, иногда, и иногда он застревает!HTML Ссылка разбора с помощью BeautifulSoup

import urllib 
from bs4 import BeautifulSoup 

rawHtml = '' 
url = r'http://iasexamportal.com/civilservices/tag/voice-notes?page=' 
for i in range(1, 49): 
    #iterate url and capture content 
    sock = urllib.urlopen(url+ str(i)) 
    html = sock.read() 
    sock.close() 
    rawHtml += html 
    print i 

Здесь я печатаю переменную цикла, чтобы узнать, где она застревает. Это показывает мне, что он случайно застревает в любой последовательности цикла.

soup = BeautifulSoup(rawHtml, 'html.parser') 
t='' 
for link in soup.find_all('a'): 
    t += str(link.get('href')) + "</br>" 
    #t += str(link) + "</br>" 
f = open("Link.txt", 'w+') 
f.write(t) 
f.close() 

какой может быть возможная проблема. Это проблема с конфигурацией сокета или с какой-либо другой проблемой.

Это ошибка, которую я получил. Я проверил эти ссылки - python-gaierror-errno-11004, ioerror-errno-socket-error-errno-11004-getaddrinfo-failed для решения. Но я не нашел его полезным.

d:\python>python ext.py 
Traceback (most recent call last): 
    File "ext.py", line 8, in <module> 
    sock = urllib.urlopen(url+ str(i)) 
    File "d:\python\lib\urllib.py", line 87, in urlopen 
    return opener.open(url) 
    File "d:\python\lib\urllib.py", line 213, in open 
    return getattr(self, name)(url) 
    File "d:\python\lib\urllib.py", line 350, in open_http 
    h.endheaders(data) 
    File "d:\python\lib\httplib.py", line 1049, in endheaders 
    self._send_output(message_body) 
    File "d:\python\lib\httplib.py", line 893, in _send_output 
    self.send(msg) 
    File "d:\python\lib\httplib.py", line 855, in send 
    self.connect() 
    File "d:\python\lib\httplib.py", line 832, in connect 
    self.timeout, self.source_address) 
    File "d:\python\lib\socket.py", line 557, in create_connection 
    for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed 

Он работает отлично, когда я запускаю его на своем личном ноутбуке. Но он дает ошибку, когда я запускаю его на рабочем столе Office. Кроме того, моя версия Python - 2,7. Надеюсь, эта информация поможет.

+0

Что вы подразумеваете под _it, получается stuck_? Появляется ли ошибка, и у вас есть стек? или это просто, что программа висит в течение неожиданного долгого времени? –

+0

Кажется работать для меня. Пожалуйста, объясните «застревание» ... – holdenweb

ответ

0

Наконец-то, ребята .... Это сработало! Тот же скрипт работал, когда я также проверял другие ПК. Так, вероятно, проблема была из-за настройки брандмауэра или настройки прокси моего офиса рабочего стола. который блокировал этот сайт.

Смежные вопросы