2017-04-13 104 views
-2

我一边抓着网站“http://www.queensbronxba.com/directory/”一边用beautifulsoup卡住了。我几乎完成了拼抢,并且只留下段落标签中列出的公司名称。问题是在同一个div中有更多的段落标签,但我只需要第一个,因为它给出了公司名称。所以我需要第一段关于div的不只是第一个。这是我用来srcape代码:用python 2.7和beautifulsoup刮脸的网站4

page = requests.get("http://www.queensbronxba.com/directory/") 
soup = BeautifulSoup(page.content, 'html.parser') 
company = soup.find(class_="boardMemberWrap") 
contact = company.find_all(class_="boardMember") 
info = contact[0] 
print(info.prettify()) 

name_tags = company.select("h4") 
names = [nt.get_text() for nt in company_tags] 
names 

company_tags = company.select("p") #here I need help to get only first paragraphs of following div containers 
companies = [ct.get_text() for ct in company_tags] 
companies 

phone_tags = company.select('a[href^="tel"]') 
phones = [pt.get_text() for pt in phone_tags] 
phones 

email_tags = company.select('a[href^="mailto"]') 
emails = [et.get_text() for et in email_tags] 
emails 
+2

要明确什么是你的问题。现在你坚持什么? – Mani

+0

在company_tags上有评论,说明我需要帮助的地方。 – Goran

+0

你应该在你的问题中描述你的代码之外的问题,所以清楚地说明了这一点。如果您只希望获得所有文本中的一个段落,请解析文本,也许按\ n分割文本。 – MooingRawr

回答

0
import requests 
from bs4 import BeautifulSoup 

page = requests.get("http://www.queensbronxba.com/directory/") 
soup = BeautifulSoup(page.content, 'html.parser') 
company = soup.find(class_="boardMemberWrap") 
contact = company.findAll(class_="boardMemberInfo") 
info = contact[0] 
print(info.prettify()) 


name_tags = company.select("h4") 
names = [nt.get_text() for nt in name_tags] 
print(names) 


for name in company.findAll(class_="boardMember"): 
    for n in name.findAll('p')[:1]: 
    print(n.text) 


phone_tags = company.select('a[href^="tel"]') 
phones = [pt.get_text() for pt in phone_tags] 
print(phones) 


email_tags = company.select('a[href^="mailto"]') 
emails = [et.get_text() for et in email_tags] 
print(emails) 
+0

此代码完成了这项工作 – Goran