2017-01-15 5 views
-1

Я добрая к Python и им пытаюсь извлечь информацию с веб-страницы (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: info[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

Там нет такого понятия, как * суб * связи. Есть ссылки и страницы. –

+0

хорошо, то я имел в виду страницы, которые вы просматриваете на главной странице: mainpage: http://findanrd.eatright.org/listing/search?zipCode=page=1 страница "позади": 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

hey thanks, но я попытался получить информацию со всех страниц «просмотреть детали», для каждой страницы findanrd.eatright.org/listing/search?zipCode=page=1 findanrd.eatright.org/listing/details/5891? zipCode = page% 3D1 через findanrd.eatright.org/listing/search?zipCode=page=1 – Markus