无法使用BeautifulSoup

时间:2018-03-28 13:28:49

标签: python web-scraping beautifulsoup

我正在尝试使用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

3 个答案:

答案 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}}