Добавление значений в словарь в FOR L oop. Обновление вместо «добавления» - PullRequest
0 голосов
/ 22 апреля 2020
import requests
from bs4 import BeautifulSoup

urls = ['url1']
dictionary = {}

for url in urls:
    req = requests.get(url)
    soup = BeautifulSoup(req.text, "lxml")

    for sub_heading in soup.find_all('h3'):  
        dictionary[url] = sub_heading.text

print(dictionary)

Я получаю результат, который выглядит примерно так: {url: sub_heading.text}, а не словарь, содержащий все ожидаемые значения. Похоже, что l oop обновляется вместо "добавления" ...

1 Ответ

1 голос
/ 23 апреля 2020

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

Так что в этом коде url равен key и 'sub_heading. text 'is value .

И каждый раз, когда l oop запускается, обновляется только значение url в dict.

 for sub_heading in soup.find_all('h3'):  
        dictionary[url] = sub_heading.text

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...