2016-10-23 13 views
0

私はちょうどウェブのスクラップを開始しています。私はウェブページから特定のリンクを引き出そうとしています。私は正常にリンクのためのhrefsを含む<a>クラスのリストを作成しましたが(実際にそれらのものが何であるかはわかりませんが)、私の問題は、私が望まない他のノイズも含まれていることです。どうすればhrefの部分だけを分離できますか?ここでは、コードがあります:<a>のPythonでhrefを引き出す方法

data2015 = requests.get('https://www.tabroom.com/index/index.mhtml?country=&year=2015&month=') 
data2015 = BeautifulSoup(data2015.content, 'lxml') 
data2015 = data2015.find_all('tr') 
for tr in range(len(data2015)): 
    data2015[tr] = data2015[tr].find_all('td') 

relevantData = [0,2] 
for tr in range(len(data2015)): 
    try: 
     data2015[tr] = [data2015[tr][i] for i in relevantData] 
    except: 
     pass 
    for td in range(len(data2015[tr])): 
     data2015[tr][td] = [data2015[tr][td].get_text().strip(), data2015[tr][td].find_all('a')] 

明確にするために、data2015は、2番目の要素はリンクを含む<a>の事ですが、また、他の第二は、(また、二つの要素のリスト)ですが、今、2つの要素を含むリストのリストであります私は欲しいものではありません。 その要素は次のようになります。

[<a class="white smallish nearfull" href="tourn/index.mhtml?tourn_id=4445">\n\t\t\t\t\t\t\tGranite District Novice Imp Spar and Congress\n\t\t\t\t\t\t</a>] 

は、どのように私は、その後BSoupでそれを開くことができるように、単にリンクを取得するようにこれを清掃終えることができますか?

答えて

0

あなたのデータセットであるリストの中にテーブル内の各行からテキスト/リンクを引っ張って自分の行に入れようとしているとします。

これは、行内のすべてのリンクを見つけ、text/hrefを各行のリストの2タプルに入れます。したがって、データセットには各行のリストがあり、その行の各アンカーの2タプルの要素を各タプルのtext/hrefとともに格納します。

from bs4 import BeautifulSoup as BS 
import requests 

response = requests.get('https://www.tabroom.com/index/index.mhtml?country=&year=2015&month=') 
soup = BS(response.content, "html.parser") 
trs = soup.find('table', {'id': 'tournlist'}).find_all('tr') 
dataset = [ 
    [(y.text.strip(), y['href']) for y in x.find_all("a")] for x in trs 
] 
import pprint 
pprint.pprint(dataset) 
関連する問題