2015-08-18 7 views
1

Я пытаюсь сканировать содержимое веб-страницы, но я не понимаю, почему я получаю эту ошибку: http.client.IncompleteRead: IncompleteRead(2268 bytes read, 612 more expected)Почему я не могу просканировать эту ссылку в Python?

здесь е звено Я пытаюсь ползать:www.rc2.vd.ch

Здесь код Python Я использую ползать:

import requests 
from bs4 import BeautifulSoup 
def spider_list(): 
    url = 'http://www.rc2.vd.ch/registres/hrcintapp-pub/companySearch.action?lang=FR&init=false&advancedMode=false&printMode=false&ofpCriteria=N&actualDate=18.08.2015&rowMin=0&rowMax=0&listSize=0&go=none&showHeader=false&companyName=&companyNameSearchType=CONTAIN&companyOfsUid=&companyOfrcId13Part1=&companyOfrcId13Part2=&companyOfrcId13Part3=&limitResultCompanyActive=ACTIVE&searchRows=51&resultFormat=STD_COMP_NAME&display=Rechercher#result' 

    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, 'html.parser') 

    for link in soup.findAll('a', {'class': 'hoverable'}): 
     print(link) 

spider_list() 

Я попытался с другой ссылке на сайте, и он работает нормально, но почему я не могу просканировать этот?

Если это невозможно сделать с помощью этого кода, то как я могу это сделать?

------------ ------------ EDIT

здесь полное сообщение об ошибке:

Traceback (most recent call last): 
    File "C:/Users/Nuriddin/PycharmProjects/project/a.py", line 19, in <module> 
    spider_list() 
    File "C:/Users/Nuriddin/PycharmProjects/project/a.py", line 12, in spider_list 
    source_code = requests.get(url) 
    File "C:\Python34\lib\site-packages\requests\api.py", line 69, in get 
    return request('get', url, params=params, **kwargs) 
    File "C:\Python34\lib\site-packages\requests\api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "C:\Python34\lib\site-packages\requests\sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Python34\lib\site-packages\requests\sessions.py", line 605, in send 
    r.content 
    File "C:\Python34\lib\site-packages\requests\models.py", line 750, in content 
    self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes() 
    File "C:\Python34\lib\site-packages\requests\models.py", line 673, in generate 
    for chunk in self.raw.stream(chunk_size, decode_content=True): 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\response.py", line 303, in stream 
    for line in self.read_chunked(amt, decode_content=decode_content): 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\response.py", line 450, in read_chunked 
    chunk = self._handle_chunk(amt) 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\response.py", line 420, in _handle_chunk 
    returned_chunk = self._fp._safe_read(self.chunk_left) 
    File "C:\Python34\lib\http\client.py", line 664, in _safe_read 
    raise IncompleteRead(b''.join(s), amt) 
http.client.IncompleteRead: IncompleteRead(4485 bytes read, 628 more expected) 
+0

отлично работает на Python 2 –

+0

@VincentBeltman Почему это не работает на Python 3? – Lindow

+0

Не могли бы вы предоставить полную трассировку стека? Как вы запускаете свою программу? –

ответ

2

Там может быть проблемой в вашем редакторе.

Я получаю правильный результат в python 3 с кодом в IDLE.

изображение прилагается ниже справочно-

enter image description here

Единственное, что я могу думать о том, чтобы каким-то образом обойти ошибку:

import requests 
from bs4 import BeautifulSoup 
def spider_list(): 
    url = 'http://www.rc2.vd.ch/registres/hrcintapp-pub/companySearch.action?lang=FR&init=false&advancedMode=false&printMode=false&ofpCriteria=N&actualDate=18.08.2015&rowMin=0&rowMax=0&listSize=0&go=none&showHeader=false&companyName=&companyNameSearchType=CONTAIN&companyOfsUid=&companyOfrcId13Part1=&companyOfrcId13Part2=&companyOfrcId13Part3=&limitResultCompanyActive=ACTIVE&searchRows=51&resultFormat=STD_COMP_NAME&display=Rechercher#result' 
    try: 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, 'html.parser') 

     for link in soup.findAll('a', {'class': 'hoverable'}): 
      print(link) 
    except: 
     pass 
     #I am passing but you do whatever you want to do in case of error 
spider_list() 

Позвольте мне знать, если это помогает.

+0

Он тоже не работал с IDLE, у меня такая же ошибка : 'http.client.IncompleteRead: IncompleteRead (прочитано 907 байт, еще 1867 ожидаемых)'. – Lindow

+0

Что произойдет, если вы попробуете другой сайт? –

+0

@ VincentBeltman Он отлично работает и для других сайтов. –

1

Как насчет этого!

import requests 
from lxml import html 
def spider_list(): 
    url = 'https://www.rc2.vd.ch/registres/hrcintapp-pub/companySearch.action?lang=FR&init=false&advancedMode=false&printMode=false&ofpCriteria=N&actualDate=18.08.2015&rowMin=0&rowMax=0&listSize=0&go=none&showHeader=false&companyName=&companyNameSearchType=CONTAIN&companyOfsUid=&companyOfrcId13Part1=&companyOfrcId13Part2=&companyOfrcId13Part3=&limitResultCompanyActive=ACTIVE&searchRows=51&resultFormat=STD_COMP_NAME&display=Rechercher#result' 
    code = requests.get(url) 
    tree = html.fromstring(code.text) 
    skim=tree.xpath('//a[@class="hoverable"]/@href') 
    print(skim) 
spider_list() 
Смежные вопросы