#python #beautifulsoup
Вопрос:
Я пытался очистить значения нескольких URL-адресов с помощью BeautifulSoup.
Я могу успешно сделать это для одного URL-адреса, но я надеюсь получить список из примерно 300 URL-адресов из отдельного текстового файла.
Как мне ссылаться на текстовый файл URL-адресов вместо одного URL-адреса в
source = requests.get('https://notmyrealurl.com').text
.
Вот что у меня есть до сих пор:
import requests
from bs4 import BeautifulSoup
source = requests.get('https://notmyrealurl.com').text
soup = BeautifulSoup(source, features="html.parser")
title = soup.find("meta", attrs={'itemprop': 'acquia_lift:content_keywords'})
print(title["content"] if title is not None else "No meta title given")
Ответ №1:
Вы можете использовать open
и повторять каждую строку URL-адреса.
import requests
from bs4 import BeautifulSoup
with open("your_txt.txt") as file:
for line in file:
url = line.rstrip()
source = requests.get(url).text
soup = BeautifulSoup(source, features="html.parser")
title = soup.find("meta", attrs={'itemprop': 'acquia_lift:content_keywords'})
print(title["content"] if title is not None else "No meta title given")
Я предполагаю, что ваш txt-файл
url1.com
url2.com
url3.com
Комментарии:
1. Большое вам спасибо за вашу помощь. Этот подход работает.
Ответ №2:
Ваш текстовый файл должен быть списком: ['url1', 'url2', 'url3', '...']
. Вот код конфигурации для чтения текстового файла:
import requests
from bs4 import BeautifulSoup
# Read your text file
yourtextfile = open('yourtextfile.txt').read()
# import it into list
listurl = list(eval(yourtextfile))
for url in listurl:
source = requests.get(url).text
soup = BeautifulSoup(source, features="html.parser")
title = soup.find("meta", attrs={'itemprop': 'acquia_lift:content_keywords'})
print(title["content"] if title is not None else "No meta title given")
Комментарии:
1. Большое вам спасибо за вашу помощь. Этот подход работает.