2017-01-15 3 views
-1

저는 파이썬에 조금 익숙하며 웹 페이지 (http://findanrd.eatright.org/listing/search?zipCode=page=1)에서 정보를 추출하려고합니다.서브 링크에서 데이터 추출하기

"정보 페이지"에서 모든 링크를 가져 오지만 그 정보를 추출하지 못합니다.

<div class="user-info-box clearfix"> 
<dl class="details-left"> 
<dl class="details-left"> 
<dl class="details-right"> 
<dd>26850 Providence Parkway, Suite 425</dd> 
<dd>Novi, MI 48374</dd> 
<dd>Email: [email protected]</dd> 
<dd> 
Website: 
<a href="http://www.aartibatavia.com/" target="_blank">www.aartibatavia.com/</a> 
</dd> 
</dl> 

나는 거리, 이메일 주소와 웹 페이지처럼, 위의 정보를 추출 할 수 있습니다. 내 코드는 다음과 같습니다.

import requests 
from bs4 import BeautifulSoup 

def nutrispider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = 'http://findanrd.eatright.org/listing/search?zipCode=&page=' + str(page) 
     source_code = requests.get(url) 
     text = source_code.text 
     soup = BeautifulSoup(text) 
     x = 0 
     while x<=19: 
      rows = soup.findAll('tr', {'data-index':x}) 
      for row in rows: 
       link_elm = row.find('div', {'class':'search-address-list-address'}).a 
       link = 'http://findanrd.eatright.org' + link_elm['href'] 

       users = soup.findAll('div', {'class': 'user-info-box clearfix'}) 
       for user in users: 
        information = user.find('dd') 
        text = information.get_Text() 
        print(text) 
       print(link) 
      x += 1 
     page += 1 

nutrispider(1) 

현재 오류는 없지만 정보가있는 서브 페이지에 대한 링크 만 인쇄됩니다.

+0

A * 서브 * 링크 같은 것은 없다. 링크와 페이지가 있습니다. –

+0

그럼 나는 메인 페이지를 통해 접근하는 페이지를 의미했습니다 : mainpage : http://findanrd.eatright.org/listing/search?zipCode=page=1 페이지 "behind": http://findanrd.eatright.org/listing/details/5891? zipCode = page % 3D1 – Markus

+0

그리고 어디에 문제가 있습니까? 목록을 사용하십시오. –

답변

0
import requests, bs4 

url = 'http://findanrd.eatright.org/listing/search?zipCode=page=1' 
r = requests.get(url) 
soup = bs4.BeautifulSoup(r.text, 'lxml') 

for tr in soup.table('tr'): 
    address = tr.find(class_='search-address-list-address').get_text(strip=True).strip('View details') 
    name = tr.find(class_='search-address-list-name').get_text(strip=True) 
    link = tr.p.a['href'] 
    print(name, address, link) 

아웃 :

Aarti Batavia, MS RD IFMCP 26850 Providence Parkway, Suite 425Novi, MI 48374 http://maps.google.com/maps?saddr=&daddr=26850 Providence Parkway, Suite 425 Novi, MI 48374 
Aarti Batavia, MS RD IFMCP 26850 Providence Parkway, Suite 425Novi, MI 48374 http://maps.google.com/maps?saddr=&daddr=26850 Providence Parkway, Suite 425 Novi, MI 48374 
Abbey Carlson, RD 3935 N 75 WHyde Park, UT 84318 http://maps.google.com/maps?saddr=&daddr=3935 N 75 W Hyde Park, UT 84318 
Abbi Kifer, MED RDN LD PO Box 120Mount Storm, WV 26739 http://maps.google.com/maps?saddr=&daddr=PO Box 120 Mount Storm, WV 26739 
Abbie Scott, RD LD Hy-Vee, Inc.3221 SE 14th StreetDes Moines, IA 50320 http://maps.google.com/maps?saddr=&daddr=3221 SE 14th Street Des Moines, IA 50320 
+0

고마워, 하지만 findanrd.eatright.org/listing/search?zipCode=page=1의 모든 페이지에 대한 모든 "세부 정보보기"페이지에서 정보를 얻으려고 시도했습니다. findanrd.eatright.org/listing/details/5891? zipCode = page % 3D1 via findanrd.eatright.org/listing/search?zipCode=page=1 – Markus