Python刮取没有类名的特定标记

时间:2017-05-15 08:44:04

标签: python web-scraping beautifulsoup

我正在开发一个python脚本来从特定站点获取数据。 我使用Beautiful Soap作为python模块。 HTML页面中的有趣数据属于这种结构:

<tbody aria-live="polite" aria-relevant="all">
  <tr  style="">
   <td>
      <a href="www.server.com/art/crag">Name<a>
   </td>
   <td class="nowrap"></td>
   <td class="hidden-xs"></td>
  </tr>
</tbody>

到标签tbody中有更多的tr标签,我想把每个标签td的第一个标签a带到

我试过这样的方式:

page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
a = soup.find(id='tabella_falist')
b = a.find("tbody")
link = [p.attrs['href'] for p in b.select("a")]

但是这样脚本会将所有href放入所有td标记中。怎么才能先拿?

由于

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以试试这个:

from bs4 import BeautifulSoup
import requests

url = 'your_url'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')

print(soup.a)

soup.a将返回页面上的第一个a标记。

答案 1 :(得分:0)

这应该做的工作

html = '''<html><body><tbody aria-live="polite" aria-relevant="all">
  <tr  style="">
   <td>
      <a href="www.server.com/art/crag">GOOD ONE<a>
      <a href="www.server.com/art/crag">NOT GOOD ONE<a>
   </td>
   <td class="nowrap">
      <a href="#">GOOD ONE</a>
   </td>
   <td class="hidden-xs"></td>
  </tr>
</tbody></body></html>'''

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)

for td in soup.select('td'):
    a = td.find('a')
    if a is not None:
        print a.attrs['href']