2016-01-06 3 views
1
#!/usr/bin/python 

from __future__ import print_function 
import textwrap 
import requests 
from bs4 import BeautifulSoup 

def bbb_spider(max_pages): 
    bus_cat = raw_input('Enter a business category: ') 
    pages = 1 
    while pages <= max_pages: 
     url = 'http://www.bbb.org/search/?type=category&input=' +  str(bus_cat) + '&page=' + str(pages) 
     sauce_code = requests.get(url) 
     plain_text = sauce_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     for link in soup.select("table.search-results-table tr h4 a"): 
      href = link.get('href') 
      bbb_profiles(href) 
     pages += 1 

def bbb_profiles(profile_urls): 
    sauce_code = requests.get(profile_urls) 
    plain_text = sauce_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 
    for business_name in soup.findAll("h1", {"class": "business-title"}): 
     print(business_name.string) 
    for business_phone in soup.findAll("span", {"class": "business-phone"}): 
     print(business_phone.string) 
    for business_address in soup.select("div.business-detail-text p span.nobr"): 
     print(business_address.string, end=" ") 

sort_pages = input('How many pages to sort through?: ') 
bbb_spider(sort_pages) 

Так что у меня какой-то вывод, который выглядит следующим образом:Python - Как перемещать выходной текст влево/вверх?

Phone 
        Address  Name of Business 

То, что я хотел бы иметь это:

Name of Business 
Phone 
Address 

В основном то, что здесь происходит, что на протяжении всей моей петли Еогеасп, для следующий блок элементов, упорядоченный, как мне хотелось бы (имя, телефон, адрес), имя находится в той же строке, что и блок предыдущего адреса. Так что я пытаюсь сделать, это привести имя вниз и влево, затем обратиться влево, а затем телефон будет в порядке, как есть.

+0

проверьте исходные строки. они могут содержать пробелы, которые вы видите, тогда вам нужно «обрезать» их. –

+0

@ivan_pozdeev Ahh. Функция strip() да? – n0de

+0

@ n0de Да. Прежде чем бросать его, сначала проверьте, не является ли это проблемой. –

ответ