for ループを使用して webscraper を作成しました。理由はわかりませんが、URL を返し (これが返してほしいものです)、リスト内の次の URL をフェッチする前に、NoneType オブジェクトを返します。スクリプトを遅くすること以外は、最初の URL よりも多くを印刷することができないためではない場合、大したことではありません。
from BeautifulSoup import BeautifulSoup
from mechanize import Browser
br = Browser()
page = br.open("https://bdkv2.borger.dk/foa/Sider/default.aspx?fk=22&foaid=11541520")
html = page.read()
soup = BeautifulSoup(html)
link = soup.findAll('a')
kommunelink = link[21:116]
for kommune in kommunelink:
kommuneside = br.open(kommune['href'])
html2 = kommuneside.read()
soup2 = BeautifulSoup(html2)
hjemmesidelink = soup2.find('a', id='_uscAncHomesite')
print hjemmesidelink['href']
このようにして、私の出力は次のようになります。
http://www.albertslund.dk
Traceback (most recent call last):
File "C:\Users\kba\Desktop\kommuneskraber.py", line 14, in <module>
print hjemmesidelink['href']
TypeError: 'NoneType' object has no attribute '__getitem__'
次のようなものをいじってみました: If variable == specific class, then print, しかし、それは機能しません。例:
If hjemmesidelink['href'] == <class 'BeautifulSoup.Tag'>:
print hjemmesidelink['href']
if hjemmesidelink.class == BeautifulSoup.Tag:
print hjemmesidelink['href']
どのようにすべきか考えていますか?または、さらに良いかもしれませんが、スクリプトがループを反復するたびに「NoneType」オブジェクトをフェッチする場所/理由はありますか? 本当にありがとう。