Как получить несколько страниц веб-сайта для очистки определенных данных, когда известна только ссылка на домен, используя python и beautifulsoap

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

Я новичок в очистке python и хочу написать код для очистки данных веб-сайта, и это вся внутренняя страница, когда разбиение на страницы недоступно, а ссылки на страницы динамические. вы можете увидеть ссылку, которую я разместил, где я пытаюсь собрать информацию о компании, имени, адресе и номере телефона
Вотмой код.

Я перепробовал множество вопросов из stackoverflow, но они не соответствовали моим требованиям.

 from bs4 import BeautifulSoup
import requests
source= requests.get('http://businessdirectory.pk/Default.aspx?action=Businessamp;pid=762390').text

soup= BeautifulSoup(source, 'lxml')
ParentDiv= soup.find('div' , class_='businessDetails')
CompanyName= ParentDiv.find('p' , class_='title').text
CityName= ParentDiv.find('p' , class_='cityName').text
CityAddress= ParentDiv.find('p' , class_='address').text
PhoneNumber= ParentDiv.find('p' , class_='phone').text
MobileNo= ParentDiv.find('p' , class_='mobNo').text
print(CompanyName)
print(CityName)
print(CityAddress)
print(PhoneNumber)
  

Все, что я хочу, это просто указать ссылку на домен, и он получит всю внутреннюю страницу и будет искать там те же данные.

Ответ №1:

Попробуйте приведенный ниже код, надеюсь, это поможет.

 from bs4 import BeautifulSoup
import requests
page_num = 0

company_name=[]
City_Name=[]
City_Address=[]
Phone_Number=[]
Maxpage=12
while page_num<Maxpage:
    page = "http://businessdirectory.pk/Default.aspx?action=Businessamp;pid=762390amp;page={}".format(page_num)
    pageTree = requests.get(page)
    soup = BeautifulSoup(pageTree.text, 'html.parser')
    ParentDiv = soup.find('div', class_='businessDetails')

    CompanyName = ParentDiv.find('p', class_='title').text
    CityName = ParentDiv.find('p', class_='cityName').text
    CityAddress = ParentDiv.find('p', class_='address').text
    PhoneNumber = ParentDiv.find('p', class_='phone').text

    company_name.append(CompanyName)
    City_Name.append(CityName)
    City_Address.append(CityAddress)
    Phone_Number.append(PhoneNumber)
    page_num  = 1


print(company_name)
print(City_Name)
print(City_Address)
print(Phone_Number)
  

Вывод будет таким.

 ['Ab Traders', 'Al Faisal Machinery Store', 'Ameen Pipe Store', 'Aslam Air Compressor', 'Best Engineering Works', 'China Center', 'Empyrean Group', 'General Industrial Corporation', 'Habib Mill Store', 'Humayun Traders', 'Islam Air Corporation', 'Khalid Hussain Workshop 3']
['Faisalabad', 'Faisalabad', 'Faisalabad', 'Faisalabad', 'Faisalabad', 'Faisalabad', 'Lahore', 'Faisalabad', 'Faisalabad', 'Faisalabad', 'Faisalabad', 'Faisalabad']
['Sadiq Market, Railway Road', 'Railway Road', 'Sadiq Market, Railway Road', 'Railway Road', 'Sadiq Market, Railway Road', 'Railway Road', '8-E 1, Jagawar Chowk, Near Allah Hu Chowk, Johar Town', 'Sadiq Market, Railway Road', 'Railway Road', 'Sadiq Market, Railway Road', 'Railway Road', 'General Bus Stand']
['0412639166', '0412646985-2606985', '0412618759', '0412600387', '0412632037', '0412600504-2634502', '0336-9954475', '0412636174-2637446', '0412617274', '0412635348-2617469', '0412618242', '0418781513']
  

Комментарии:

1. Это не то, чего я действительно хочу. я могу получить доступ ко всем данным с одной страницы, но я говорю о многостраничной, например, если я захожу на домашнюю страницу веб-сайта, я хочу собрать все данные с другой страницы, например, «О нас», «Сообщения», «свяжитесь с нами» и т. Д.