1
我已經將HTML縮小到了使用我的代碼的一個點,但是我無法使用列表理解來獲取href地址。初學者問題從Python BeautifulSoup抓取涉及列表理解的HREF
這裏是我的代碼(BASE_URL和STEM_URL是固定的地址):
soup = BeautifulSoup(requests.get(BASE_URL).text)
divyclass = soup.find("div", {"class":"node-inner"}).tbody
在那裏我遇到問題,我得到這個錯誤(TypeError: 'NoneType' object has no attribute '__getitem__'
)是當我加入這一行的列表理解:
links = [STEM_URL + row.a["href"] for row in divyclass.findAll("td")]
當我運行
for row in divyclass.findAll("td"):
print row
,我得到這個輸出順便說一句,只是讓你可以發ee我從哪裏拉hrefs:
<td align="center" class="tableheader" colspan="4" valign="middle">NBA Drafts</td>
<td align="center" class="text" valign="middle"> </td>
<td align="center" class="text" valign="middle"> </td>
<td align="center" class="text" valign="middle"> </td>
<td align="center" class="text" valign="middle"><a href="/nba_final_draft/2014">2014</a></td>
<td align="center" class="text" valign="middle"> <a href="/nba_final_draft/2013">2013</a></td>
<td align="center" class="text" valign="middle"> <a href="/nba_final_draft/2012">2012</a></td>
<td align="center" class="text" valign="middle"><a href="/nba_final_draft/2011">2011</a></td>
<td align="center" class="text" valign="middle"><a href="/nba_final_draft/2010">2010</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_final_draft/2009">2009</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2008.html">2008</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2007.html">2007</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2006.html">2006</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2005.html">2005</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2004.html">2004</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2003.html">2003</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2002.html">2002</a></td>
<td align="center" class="text" valign="middle" width="25%"><a href="/nba_draft_history/2001.html">2001</a></td>
gah!我只想拉扯hrefs!在此先感謝傢伙!
謝謝@Misandrist!是否有任何理由爲什麼'row.a [「href」] = True'不會有效?有沒有其他的辦法可以奏效? – SpicyClubSauce
@SpicyClubSauce:如果'row.a'爲'None',row.a [「href」] = True'基本上會引發相同的'TypeError'。你不能索引一個'None'對象來設置值,而不是獲取值;它不是一個集合。 – abarnert
@SpicyClubSauce:另外,你爲什麼要這麼做?然後,不是隻得到實際的'href'字符串,而是混合使用'href'字符串和無用的'True'布爾值。 – abarnert