#!/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
В основном то, что здесь происходит, что на протяжении всей моей петли Еогеасп, для следующий блок элементов, упорядоченный, как мне хотелось бы (имя, телефон, адрес), имя находится в той же строке, что и блок предыдущего адреса. Так что я пытаюсь сделать, это привести имя вниз и влево, затем обратиться влево, а затем телефон будет в порядке, как есть.
проверьте исходные строки. они могут содержать пробелы, которые вы видите, тогда вам нужно «обрезать» их. –
@ivan_pozdeev Ahh. Функция strip() да? – n0de
@ n0de Да. Прежде чем бросать его, сначала проверьте, не является ли это проблемой. –