我正在尝试使用BeautifulSoup在for循环中检索href。
我用一些find_all
整理了HTML的不相关部分。我最近做的是:
events = soup.find_all("a", attrs={"class": "event-link-wrap"})
然后我按照这样运行for循环:
for event in events:
href = event.find("href")
category = event.find("p",{"class": "category"})
title = event.find("h3")
arena = event.find("span", {"class": "venue"})
当我打印href时,我得到None
。是否href在我使用find_all
的类中?如果我打印event
我得到:
<a class="event-link-wrap" href="https://www.WHATIWANT.COM/HERE title="More Info">
<div class="thumb">
<img alt="pic_125x125.jpg" src="https://www.test.com/pic.jpg"/> </div>
<div class="info clearfix">
<p class="category">CATEGORY HERE</p>
<h3>EVENT TITLE HERE</h3>
<p class="date"><span class="m-date__rangeFirst"><span class="m-date__day"> 6 </span></span><span class="m-date__separator"> - </span><span class="m-date__rangeLast"><span class="m-date__day"> 7 </span><span class="m-date__month">april</span></span> <span class="venue"> ARENA HERE</span> </p>
</div>
<div class="buttons">
<span class="icon"></span>
<span class="icon-hover"></span>
</div>
</a>
我想要的href是第一个标签。除了href,我能够检索我想要的一切。我如何获得href?就像我提到的那样,现在返回的只有None
。
答案 0 :(得分:2)
您可以href
:
__getitem__
events = [i['href'] for i in soup.find_all("a", attrs={"class": "event-link-wrap"})]
答案 1 :(得分:1)
尝试:
events = soup.find_all("a", class_="event-link-wrap")
for event in events:
href = event.get("href")
答案 2 :(得分:1)
由于您循环遍历href
标记,该标记本身包含您所使用的href
,因此您可以使用href = event['href']
直接获取find()
。
find('href')
方法需要将标记作为其第一个参数而不是属性。因此,在代码中的任何位置使用None
始终会返回for event in events:
href = event["href"]
...
。
只需使用:
{{1}}