2016-11-12 65 views
0

我是網頁抓取領域的絕對新手,現在我想從網頁中提取可見文本。我發現了一塊碼在線:刮可見文本

import urllib2 
from bs4 import BeautifulSoup 

url = "http://www.espncricinfo.com/" 
web_page = urllib2.urlopen(url) 

soup = BeautifulSoup(url , "lxml") 
print (soup.prettify()) 

爲了上面的代碼,我得到以下結果:

/usr/local/lib/python2.7/site-packages/bs4/__init__.py:282: UserWarning: "http://www.espncricinfo.com/" looks like a URL. Beautiful Soup is not an HTTP client. You should probably use an HTTP client like requests to get the document behind the URL, and feed that document to Beautiful Soup. 
    ' that document to Beautiful Soup.' % decoded_markup 
<html> 
<body> 
    <p> 
    http://www.espncricinfo.com/ 
    </p> 
</body> 
</html> 

反正我能得到一個更具體的結果,什麼錯與代碼發生。抱歉無言以對。

+0

你也許可以讀取出錯?我們不是在這裏以更易讀的格式爲您提供信息 – Natecat

+0

也就是說您提取可見文本**,您可以舉一個網站的例子,以及可以提取什麼樣的文本。 –

+0

對不起!這基本上是一個用戶警告,其中指出我已經提供了一個URL,我可能應該使用HTTP客戶端的美麗的湯。美麗的湯只會接受URL後面的文檔。 –

回答

1

嘗試通過HTML文檔,而不是URL美化到:

import urllib2 
from bs4 import BeautifulSoup 

url = "http://www.espncricinfo.com/" 
web_page = urllib2.urlopen(url) 

soup = BeautifulSoup(web_page , 'html.parser') 
print (soup.prettify().encode('utf-8')) 
+0

我得到'ascii'編解碼器無法編碼字符錯誤。 –

+0

只需複製在Mac和Linux上粘貼此代碼,得到了迴應。哪條線給你錯誤? –

+1

謝謝!如果我們明確地編碼prettify函數給出的輸出,上面的代碼會運行。 –

1
soup = BeautifulSoup(web_page, "lxml") 

你應該通過一個類似文件的對象BeautifulSoup,而不是URL。

URL由urllib2.urlopen(url)處理和存儲的web_page