2015-09-08 30 views
0

我試圖從該鏈接的特定文本:刮使用Python和BeautifulSoup的跨度沒有返回

http://www1.folha.uol.com.br/fsp/mercado/index-20121030.shtml

我寫了這個功能來查找和抽取一段文字:

def manchete_11112011_30102012(b): 
    soup = make_soup(b) 
    data = [span.string for span in soup.find("font")] 
    noticias = [b.text for b in soup.findAll("a")] 
    return {"noticias": noticias, 
      "data": data} 

好的。我的問題是與「數據」線。運行時它什麼都不返回。當我寫「span.string」它返回「[無]」,當我寫「span.text」它返回「[U」]」

下面是HTML代碼我在找我需要內部<span id="spanLongDate">文本內容:?

<<td width="430" align="right"><font size="1"><span id="spanLongDate">São Paulo, terça-feira, 30 de outubro de 2012</span></font><img src="images/mercado.gif" hspace="10" alt="Mercado"></td> 

是否有任何其他的方式,我可以提取文本我的意思是,我寫的代碼錯了,或者是文本格式不兼容,? 「[u」]「是什麼意思?

+0

這個標籤'td'似乎在引用的HTML代碼的開頭有兩個'<''。 – Berci

+0

好吧,所以,我想你的問題可能是命名變量'span'不會使它與span標籤本身匹配。 – Berci

+0

也許這就是問題,@Berci。我不知道如何更準確,因爲這個「跨度」沒有階級。我如何在我的代碼中指定此id =「spanLongDate」?謝謝。 –

回答

0

要找到id = spanLongDate使用下面的片段

//get the span you are looking for 
span = soup.find("span", attrs = {"id":"spanLongDate"}) 

//get the text out of the span 
data = span.get_text() 

請注意,這隻會得到一個實例,如果你要找到多個實例使用.find_all

埃塔:基於您下面

評論我去看了頁面源,甚至在我的機器上運行它。這是一個功能,可以讓你甩掉漂亮的衣服。這很有用,因爲它有時看不到您在瀏覽器中查看源代碼時看到的內容。

def dumpPage(): 

    url = "http://www1.folha.uol.com.br/fsp/mercado/index-20121030.shtml" 
    print("url is: " + url) 
    page=urllib.request.urlopen(url) 

    soup = BeautifulSoup(page.read()) 
    print("read soup") 
    print(soup) 

當我打印出來並搜索「spanLongDate」時,我得到了下面的片段。

<td align="right" width="430"><font size="1"><span id="spanLongDate"></span></font><img alt="Mercado" hspace="10" src="images/mercado.gif"/></td> 

這沒有聖保羅文本。然後,我在我的Chrome瀏覽器中點擊F12以查找原始來源,並且spanLongDate<div>中也沒有文字。

也許該網頁已更新?

+0

你真是太棒了@dstudeba。謝謝您的幫助。不幸的是,這個'聖保羅,terça-feira,30 de outubro de 2012'沒有任何字符串對象。我仍然無法提取**聖保羅,terça-feira,30 de outubro de 2012 **。你知道我該如何找回它?再次感謝。 –

+0

我跟着你的鏈接,看了看源頭,實際上那裏並不存在。代碼有效,但沒有文字。我正在更新我的答案以獲得更多信息。我不知道你從哪裏得到你的原始HTML文本,但它目前不在。 – dstudeba

+0

我不知道會發生什麼。我通常從2006年到2011年檢索日期,但自2011年11月11日起,該網站更改了它的腳本。我不認爲這是由於更新。他們沒有理由取消報紙發行日期。我認爲他們的編程很薄弱,特別是因爲他們在2012年12月30日更改了網站腳本。無論如何,感謝您的幫助,您非常親切。希望你知道任何其他方式來提取這個日期! –

0

如果你只想要日期,你應該在其他地方尋找它。如果你倒出湯,然後搜索2012年,你會看到它在很多地方。使用以下代碼很容易將它從標題中解脫出來。

url = "http://www1.folha.uol.com.br/fsp/mercado/index-20121030.shtml" 
page=urllib.request.urlopen(url) 
soup = BeautifulSoup(page.read()) 
theDateTag = soup.find("title") 
theDateString = theDateTag.get_text() 
print(theDateString) 
相關問題