抓取新闻网站并获取新闻内容
Crawl a news website and getting the news content
我正在尝试从新闻网站下载文本。 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>
输出应该是:我的文本
我正在使用以下 python 代码:
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)
但是代码的输出是:"None"。你知道我的代码有什么问题吗??
问题是 您没有解析 HTML,您正在解析 URL 字符串:
html = "My URL"
parsed_html = BeautifulSoup(html)
相反,您需要先 get/retrieve/download 来源 ,例如 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)
或者,您可以使用第三方 "for humans" 样式 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
BeautifulSoup
接受 HTML 的字符串。您需要使用 URL.
从页面检索 HTML
查看 urllib for making HTTP requests. (Or requests 以获得更简单的方法。)检索 HTML 并将 that 传递给 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)
我正在尝试从新闻网站下载文本。 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>
输出应该是:我的文本 我正在使用以下 python 代码:
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)
但是代码的输出是:"None"。你知道我的代码有什么问题吗??
问题是 您没有解析 HTML,您正在解析 URL 字符串:
html = "My URL"
parsed_html = BeautifulSoup(html)
相反,您需要先 get/retrieve/download 来源 ,例如 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)
或者,您可以使用第三方 "for humans" 样式 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
BeautifulSoup
接受 HTML 的字符串。您需要使用 URL.
查看 urllib for making HTTP requests. (Or requests 以获得更简单的方法。)检索 HTML 并将 that 传递给 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)