刮擦数据时分解特定链接(Python)

时间:2018-04-20 21:11:01

标签: python beautifulsoup

以下是我正在抓取的HTML代码部分。

<div class="RadAjaxPanel" id="LiveBoard1_LiveBoard1_litGamesPanel">
    <a href="leaders.aspx?pos=all&stats=pit&lg=all&qual=0&type=8&season=2016&month=0&season1=2016&ind=0&team=0&rost=0&age=0&filter=&players=p2018-04-20">
        Today's Probable Starters and Lineups Leaderboard
    </a>
</div>

在整个代码中,我需要找出一种方法来刮除这个div类中的所有链接,除了上面发布的链接。有谁知道如何分解特定div类中的一个特定链接,但仍然刮掉剩余的链接?关于此特定链接,链接的开头(“leaders.aspx”)与我当前定位的链接不同。以下是我当前代码的示例。

import requests
import csv
from bs4 import BeautifulSoup

page=requests.get('https://www.fangraphs.com/livescoreboard.aspx?date=2018-04-18')
soup=BeautifulSoup(page.text, 'html.parser')

#Remove Unwanted Links
[link.decompose() for link in soup.find_all(class_='lineup')]
[yesterday.decompose() for yesterday in soup.find_all('td',attrs= 
{'colspan':'2'})]


team_name_list=soup.find(class_='RadAjaxPanel')
team_name_list_items=team_name_list.find_all('a')


for team_name in team_name_list_items:
  teams=team_name.contents[0]
  print(teams)

winprob_list=soup.find(class_='RadAjaxPanel')
winprob_list_items=winprob_list.find_all('td',attrs={'style':'border:1px 
solid black;'})

for winprob in winprob_list_items:
  winprobperc=winprob.contents[0]
  print(winprobperc)

总而言之,我只需要删除第一个代码块中发布的“今天的可能启动器和阵容排行榜”链接。提前谢谢!

1 个答案:

答案 0 :(得分:0)

只需将CSS selectors.select_one()

一起使用即可
soup.select_one('.RadAjaxPanel > center > a').decompose()