使用BeautifulSoup刮取URL

时间:2014-01-19 23:54:48

标签: python web-scraping beautifulsoup html-table

我已经删除了下表的HTML代码。我想刮掉与表中每个元素相关的链接,我该怎么做?

这是我的代码:

import urllib2
from bs4 import BeautifulSoup
first=urllib2.urlopen("http://www.admision.unmsm.edu.pe/res20130914/A.html").read()
soup=BeautifulSoup(first)
for tr in soup.find_all('tr')[2:]:
    tds = tr.find_all('td')
    print tds

结果如下:

[<td><a href="./A/013/0.html">ENFERMERÍA</a></td>]
[<td><a href="./A/0141/0.html">TEC. MED. LAB. CLÍNICO Y ANATOMÍA PATOLÓGICA</a></td>]
[<td><a href="./A/0142/0.html">TEC. MED. TERAPIA FÍSICA Y REHABILITACIÓN</a></td>]
[<td><a href="./A/0143/0.html">TEC. MED. RADIOLOGÍA</a></td>]

2 个答案:

答案 0 :(得分:2)

如果每个td中只有一个链接,则会输出所有链接。

for td in tds:
    print td.a['href']

但是在find_all元素上使用tr可能更容易:

for link in tr.find_all('a'):
    print link['href']

如果您想将它们保存在列表中,请改为:

links = []
for tr in soup.find_all('tr')[2:]:
    links.extend([link['href'] for link in tr.find_all('a')])

答案 1 :(得分:1)

页面中只有一个表格,因此您只需使用列表理解

即可
links = [row.a['href'] for row in soup.find_all('tr') ]

结果

['./A/011/0.html', './A/012/0.html', './A/013/0.html', './A/0141/0.html', './A/0142/0.html', './A/0143/0.html', './A/0144/0.html', './A/015/0.html', './A/041/0.html', './A/042/0.html', './A/043/0.html', './A/051/0.html', './A/071/0.html', './A/072/0.html', './A/073/0.html', './A/081/0.html', './A/101/0.html', './A/102/0.html', './A/103/0.html', './A/131/0.html', './A/132/0.html', './A/141/0.html', './A/142/0.html', './A/144/0.html', './A/145/0.html', './A/162/0.html', './A/163/0.html', './A/165/0.html', './A/166/0.html', './A/167/0.html', './A/171/0.html', './A/172/0.html', './A/181/0.html', './A/191/0.html', './A/192/0.html', './A/193/0.html', './A/201/0.html', './A/202/0.html']