как читать ссылки из списка с Beautifulsoup? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть список с большим количеством ссылок, и я хочу очистить их с помощью Beautifulsoup в Python. 3

ссылки - это мой список, который содержит сотни urls.Я пробовал этот код, чтобы очистить их все, но по какой-то причине он не работает

 links= ['http://www.nuforc.org/webreports/ndxe201904.html',
'http://www.nuforc.org/webreports/ndxe201903.html',
'http://www.nuforc.org/webreports/ndxe201902.html',
'http://www.nuforc.org/webreports/ndxe201901.html',
'http://www.nuforc.org/webreports/ndxe201812.html',
'http://www.nuforc.org/webreports/ndxe201811.html',...]

raw = urlopen(i in links).read()
ufos_doc = BeautifulSoup(raw, "html.parser")

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

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

import requests
from bs4 import BeautifulSoup as bs

links= ['http://www.nuforc.org/webreports/ndxe201904.html',
'http://www.nuforc.org/webreports/ndxe201903.html',
'http://www.nuforc.org/webreports/ndxe201902.html',
'http://www.nuforc.org/webreports/ndxe201901.html',
'http://www.nuforc.org/webreports/ndxe201812.html',
'http://www.nuforc.org/webreports/ndxe201811.html']

with requests.Session as s:
    for link in links:
        r = s.get(link)
        soup = bs(r.content, 'lxml')
        #do something
0 голосов
/ 12 апреля 2019

raw должен быть список, содержащий данные каждой веб-страницы. Для каждой записи в raw проанализируйте ее и создайте суповой объект. Вы можете хранить каждый объект супа в списке (я назвал его soups):

links= ['http://www.nuforc.org/webreports/ndxe201904.html',
'http://www.nuforc.org/webreports/ndxe201903.html',
'http://www.nuforc.org/webreports/ndxe201902.html',
'http://www.nuforc.org/webreports/ndxe201901.html',
'http://www.nuforc.org/webreports/ndxe201812.html',
'http://www.nuforc.org/webreports/ndxe201811.html']

raw = [urlopen(i).read() for i in links]
soups = []
for page in raw:
    soups.append(BeautifulSoup(page,'html.parser'))

Вы можете получить доступ, например. объект супа для первой ссылки с soups[0].

Кроме того, для получения ответа каждого URL, рассмотрите возможность использования модуля requests вместо urllib. Смотрите этот пост .

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