2016-06-09 4 views
-2

Я пытаюсь загрузить текст с новостного сайта. HTML является:Сканировать новостной сайт и получать новостной контент

<div class="pane-content"> 
<div class="field field-type-text field-field-noticia-bajada"> 
<div class="field-items"> 
     <div class="field-item odd"> 
       <p>"My Text" target="_blank">www.injuv.cl</a></strong></p>   </div> 

вывод должен быть: My Text Я использую следующий код питона:

try: 
    from BeautifulSoup import BeautifulSoup 
except ImportError: 
    from bs4 import BeautifulSoup 
html = "My URL" 
parsed_html = BeautifulSoup(html) 
p = parsed_html.find("div", attrs={'class':'pane-content'}) 
print(p) 

Но выход кода не является: «Нет». Вы знаете, что не так с моим кодом?

+0

Даже если вы проанализировали HTML, а не URL-адрес, HTML-код недействителен. Вы не можете разобрать это с помощью BeautifulSoup. – tobltobs

+0

@tobltobs 'BeautifulSoup' пытается исправить разбитый HTML; Он может анализировать, что HTML просто отлично. – That1Guy

ответ

1

Проблема заключается в том, что вы не разбор HTML, вы разбор URL строки:

html = "My URL" 
parsed_html = BeautifulSoup(html) 

Вместо этого, вы должны получить/извлечение/загрузку источник первого, пример в Python 2:

from urllib2 import urlopen 

html = urlopen("My URL") 
parsed_html = BeautifulSoup(html) 

В Python 3, это было бы:

from urllib.request import urlopen 

html = urlopen("My URL") 
parsed_html = BeautifulSoup(html) 

Или, вы можете использовать сторонние «для людей» -стиль requests library:

import requests 

html = requests.get("My URL").content 
parsed_html = BeautifulSoup(html) 

Также обратите внимание, что вы не должны использовать BeautifulSoup версии 3 на всех - она ​​больше не поддерживается. Заменить:

try: 
    from BeautifulSoup import BeautifulSoup 
except ImportError: 
    from bs4 import BeautifulSoup 

только с:

from bs4 import BeautifulSoup 
0

BeautifulSoup принимает строку HTML. Вам нужно получить HTML-код со страницы, используя URL-адрес.

Отъезд urllib для получения запросов HTTP. (. Или requests для еще более простой способ) Получить HTML и передать , что к BeautifulSoup так:

import urllib 
from bs4 import BeautifulSoup 

# Get the HTML 
conn = urllib.urlopen("http://www.example.com") 
html = conn.read() 

# Give BeautifulSoup the HTML: 
soup = BeautifulSoup(html) 

Отсюда, просто разобрать, как вы пытались ранее.

p = soup.find("div", attrs={'class':'pane-content'}) 
print(p)