Цикл очистки URL-адресов с помощью BeautifulSoup

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

прежде всего вот код, который мне удалось сделать, я немного новичок, признаю

Я поместил только 2 URL-адреса, чтобы увидеть, сработал ли цикл, и некоторую информацию, я могу добавить некоторые, когда все заработает.

urls = ["https://www.societe.com/societe/decathlon-france-500569405.html","https://www.societe.com/societe/go-sport-312193899.html"]
for url in urls:
    response = requests.get(url, headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'})
    soup = BeautifulSoup(response.text, "html.parser")
    numrcs = soup.find("td", class_ = "numdisplay")
    nomcommercial = soup.find("td", class_ = "break-word")
    print(nomcommercial.text)
    print(numrcs.text.strip())
    numsiret = soup.select('div[id^=siret_number]')
    for div in numsiret:
        print(div.text.strip())
    formejuri = soup.select('div[id^=catjur-histo-description]')
    for div in formejuri:
        print(div.text.strip())
    infosend = {
        'numrcs': numrcs,
        'nomcommercial':nomcommercial,
        'numsiret':numsiret,
        'formejuri':formejuri
    }
    tableau.append(infosend)
print(tableau)

my_infos = ['Numéro RCS',  'Numéro Siret ','Forme Juridique']

my_columns = [
    np.tile(np.array(my_infos), len(nomcommercial))
]

df = pd.DataFrame( tableau,index=nomcommercial, columns=my_columns)
df

Когда я запускаю цикл, у меня выходит правильная информация, например,

DECATHLON FRANCE
Lille Metropole B 500569405
50056940503239
SASU Société par actions simplifiée à associé unique

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

если вы можете мне помочь, я был бы очень рад

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить данные о компаниях, вы можете использовать следующий пример:

import requests
import pandas as pd
from bs4 import BeautifulSoup


urls = [
    "https://www.societe.com/societe/decathlon-france-500569405.html",
    "https://www.societe.com/societe/go-sport-312193899.html",
]

headers = {
    "User-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
}

data = []
for url in urls:
    soup = BeautifulSoup(
        requests.get(url, headers=headers).content, "html.parser"
    )
    title = soup.select_one("#identite_deno").get_text(strip=True)
    rcs = soup.select_one('td:-soup-contains("Numéro RCS") + td').get_text(
        strip=True
    )
    siret_number = soup.select_one("#siret_number").get_text(strip=True)
    form = soup.select_one("#catjur-histo-description").get_text(strip=True)

    data.append([title, url, rcs, siret_number, form])


df = pd.DataFrame(
    data,
    columns=["Title", "URL", "Numéro RCS", "Numéro Siret", "Forme Juridique"],
)
print(df.to_markdown())

Отпечатки:

ЗаголовокURL-адресНомер RCSНомер СиретЮридическая форма
0ДЕКАТЛОН ФРАНЦИЯ (DECATHLON DIRECTION GENERALE FRANCE)https://www.societe.com/societe/decathlon-france-500569405.htmlЛилль Метрополь B 50056940550056940503239SASU Société par action simplifiée à associé unique
1ЗАНИМАЙТЕСЬ СПОРТОМhttps://www.societe.com/societe/go-sport-312193899.htmlГренобль B 31219389931219389900191Société par action simplifiée

Другие вопросы по теме