拉链接并在python中抓取这些页面

时间:2013-05-12 22:41:51

标签: python python-2.7 beautifulsoup

我想从这个页面中删除一些链接。

http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/wnba/teams/pastresults/2012/team665231.html

这会获得我想要的链接。

boxurl = urllib2.urlopen(url).read()
soup = BeautifulSoup(boxurl)
boxscores = soup.findAll('a', href=re.compile('boxscore'))

我想从页面上抓取每一个箱子。我已经制作了代码来刮掉这个盒子,但我不知道怎么弄它们。

修改

我猜这种方式会更好,因为它会删除html标签。我仍然需要知道如何打开它们。

for link in soup.find_all('a', href=re.compile('boxscore')):
    print(link.get('href'))

EDIT2: 这就是我从页面的第一个链接中删除一些数据的方法。

url = 'http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/wnba/results/2012/boxscore841602.html'


boxurl = urllib2.urlopen(url).read()
soup = BeautifulSoup(boxurl)
def _unpack(row, kind='td'):
    return [val.text for val in row.findAll(kind)]

tables = soup('table')
linescore = tables[1]   
linescore_rows = linescore.findAll('tr')
roadteamQ1 = float(_unpack(linescore_rows[1])[1])
roadteamQ2 = float(_unpack(linescore_rows[1])[2])
roadteamQ3 = float(_unpack(linescore_rows[1])[3])
roadteamQ4 = float(_unpack(linescore_rows[1])[4]) 

print roadteamQ1, roadteamQ2, roadteamQ3, roadteamQ4

然而,当我尝试这个。

url = 'http://www.covers.com/pageLoader/pageLoader.aspx?    page=/data/wnba/teams/pastresults/2012/team665231.html'
boxurl = urllib2.urlopen(url).read()
soup = BeautifulSoup(boxurl)

tables = pages[0]('table')
linescore = tables[1]   
linescore_rows = linescore.findAll('tr')
roadteamQ1 = float(_unpack(linescore_rows[1])[1])
roadteamQ2 = float(_unpack(linescore_rows[1])[2])
roadteamQ3 = float(_unpack(linescore_rows[1])[3])
roadteamQ4 = float(_unpack(linescore_rows[1])[4])

我收到此错误。 tables = pages0 TypeError:'str'对象无法调用

print pages[0]

像往常一样吐出第一个链接的所有html。希望这不会太混乱。总结一下,我现在可以获得链接,但仍然可以从中获取。

1 个答案:

答案 0 :(得分:1)

这样的东西会将找到的链接的所有页面拉成一个数组,所以第一页是页面[0],第二页[1]等

boxscores = soup.findAll('a', href=re.compile('boxscore'))
basepath =  "http://www.covers.com"
pages=[]
for a in boxscores:
   pages.append(urllib2.urlopen(basepath + a['href']).read())