1
我想提取此頁面的名稱和副標題(例如)。我沒有任何問題提取名稱,但它是不成功的副標題。使用檢查在Chrome元素,我確定了副標題文本「加拿大人口普查,1901」嵌入如下:爲什麼我無法使用BeautifulSoup提取頁面的副標題?
<div class="person-info">
<div class="title ng-binding">Helen Brad in household of Geo Wilcock</div>
<div class="subhead ng-scope ng-binding" data-ng-if="!recordPersonCentric">Canada Census, 1901</div>
所以我編寫我的腳本如下:
import urllib2
import re
import csv
from bs4 import BeautifulSoup
import time
def get_FamSearch():
link = "https://example.org/pal:/MM9.1.1/KH11-999"
openLink = urllib2.urlopen(link)
Soup_FamSearch = BeautifulSoup(openLink, "html")
openLink.close()
NameParentTag = Soup_FamSearch.find("tr", class_="result-item highlight-person")
if NameParentTag:
Name = NameParentTag.find("td", class_="result-value-bold").get_text(strip=True)
name_decode = Name.encode("ascii", "ignore")
print name_decode
SubheadTag = Soup_FamSearch.find("div", class_="subhead ng-scope ng-binding")
if SubheadTag:
print SubheadTag.get_text(strip=True)
get_FamSearch()
這是結果,不能夠定位並提取副標題:
Helen Brad
[Finished in 2.2s]
嗨Alexce,謝謝。當您的代碼行是有效頁面時,您的代碼行可以正常工作,但我希望瀏覽很多頁面,其中很多頁面沒有副標題(或無效鏈接)或不同的副標題。我想設置一個變量來表示:x = Soup_FamSearch.find('dt',text ='Title')。find_next_sibling('dd')。text.strip()。然後使用一個循環,如「if x:」來輸出只有這樣子標題的鏈接。但是我得到這個錯誤:「AttributeError:'NoneType'對象沒有屬性'find_next_sibling'」。看起來像是因爲BeautifulSoup試圖找到它但失敗。我應該如何解決這個問題? – KubiK888 2014-09-02 19:41:44
@ KubiK888你可以按照你目前使用的方法:在獲取'find_next_sibling'之前,給'Soup_FamSearch.find('dt',text ='Title')'分配一個變量並檢查它是否不是'None' ()'。 – alecxe 2014-09-02 19:42:42
它的工作原理,謝謝。 – KubiK888 2014-09-02 19:59:11