2014-02-05 47 views
0

我用美麗的湯(BS4)和Python我現在有這樣的結構提取/刮痧內p從A HREF文本內的div

<div class="class1"> 
    <a class="name" href="/doctor/dr-xxxxxxxxx"><h2>Dr. XX XXXX</h2></a> 
    <p class="specialties"><a href="/location/abcd">ab cd</a></p> 
    <p class="doc-clinic-name"> 
    <a class="light_grey link" href="/clinic/fff">f ff</a> 
    </p> 
</div> 


<div class="class2"> 
    <p class="locality"> 
    <a class="link grey" href="/location/doctors/ccc">c cc</a> 
    </p> 
    <p class="fees">INR 999</p> 
    <div class="timings"> 
     <p><span class="strong">MON-SAT</span><br/><span>11:00AM-1:00PM</span>         <span>6:00PM-8:00PM</span></p> 
    <div class="clear"></div> 
</div> 

到目前爲止的代碼我已經是這個

import urllib2 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(urllib2.urlopen('abc.com').read()) 

for post in soup.find("div", "class1"): 
print post 

for x in soup.find("div", "class2"): 
    print x 

所以基本上post和x包含div class1和class2。現在我想提取的信息是

DR.XXXXXX ABCD FFF CCC INR 999 週一至週六11:00 1:00

如何I支門柱內側和x變量獲取所需的信息。謝謝

編輯

我在html中添加了空格。是否有可能在不損害空間的情況下生成csv格式? DR。 XX XXXX,ab cd,f ff,c cc,INR 999,MON-SAT 11:00 AM-1:00PM

回答

1

首先,您的縮進看起來不正確。其次,當我使用find時,我認爲你不需要for循環,因爲它應該只返回第一場比賽。

如果你只想鏈接,你可以嘗試:

for link in soup.find("div", {"class": "class1"}).findAll("a"): 
    print link.text 

,或者,如果你想要的鏈接本身:

for link in soup.find("div", {"class": "class1"}).findAll("a"): 
    print link.get("href") 

您還應該注意到用於搜索類的方法(編輯:我懷疑還有其他方法可以做到這一點,這只是我學會這麼做的方式!)

因此,您可以具體如你需要例如

doctorlink = soup.find(("div", {"class": "class1"}).find("a", {"class": "name"}) 
1
>>> ' '.join(soup.find("div", "class1").getText().split()) 
u'Dr. XXXXXX abcd fff' 
>>> ' '.join(soup.find("div", "class2").getText().split()) 
u'ccc INR 999 MON-SAT11:00AM-1:00PM 6:00PM-8:00PM' 
+0

有沒有什麼辦法來介紹一個逗號速滑運動員的肌肉不同的條目是使其在csv格式 –

+1

是'「‘加盟(中...''而不是’」。加入( ...' –