Всем доброго времени суток!
В очередной раз обращаюсь за помощью) Задача у меня следующая: есть страница сайта, где есть ссылки, ведущие на другие страницы и там тоже ссылки, ведущие на страницы. Для того, чтобы вытащить с этих вот страниц данные, мне нужен их список (чтобы программа по ним прошла).
Наглядно будет, наверно, со ссылками. Вот с этой страницы: https://gcn.gsfc.nasa.gov/gcn3_archive.html мне нужны все ссылки, у которых в адресе есть: "gcn3_arch_old". И чтобы список ссылок выглядел потом следующим образом: "https://gcn.gsfc.nasa.gov/gcn3_arch_old (+номер страницы).html". Я попыталась решить эту задачу несколькими способами, самым успешным оказался этот:
Но тут мне выдаются не только ссылки с "gcn3_arch_old", но и всякие другие. Наверно, это очень легко, но не пойму как именно и куда именно тут написать, чтоб среди всего найденного мне отбирались только ссылки с "gcn3_arch_old". Такой вот первый вопрос.
Второй вопрос касательно следующего списка ссылок. По моей идее я беру список, который формируется первым кодом, сохраняю его вручную в блокнотный файл, после чего даю его второму коду на обработку. Чтоб программа прошла по всем ссылками (следующего вида: https://gcn.gsfc.nasa.gov/gcn3_arch_old144.html) и выбрала оттуда из каждой такой ссылки только те, что в текстовых названиях содержат: "Konus-Wind detection" или "Konus-Wind observation" (например: <LI><A HREF=gcn3/26975.gcn3>26975</A> Konus-Wind observation of GRB 200131A<br> ). Для этого у меня следующий код:
Но он не выбирает ссылки. Он по всем почему-то проходится. И на этом моменте я совсем запуталась(
Буду безмерно благодарна за любую помощь!
В очередной раз обращаюсь за помощью) Задача у меня следующая: есть страница сайта, где есть ссылки, ведущие на другие страницы и там тоже ссылки, ведущие на страницы. Для того, чтобы вытащить с этих вот страниц данные, мне нужен их список (чтобы программа по ним прошла).
Наглядно будет, наверно, со ссылками. Вот с этой страницы: https://gcn.gsfc.nasa.gov/gcn3_archive.html мне нужны все ссылки, у которых в адресе есть: "gcn3_arch_old". И чтобы список ссылок выглядел потом следующим образом: "https://gcn.gsfc.nasa.gov/gcn3_arch_old (+номер страницы).html". Я попыталась решить эту задачу несколькими способами, самым успешным оказался этот:
Python:
from bs4 import BeautifulSoup
import requests
import re
base_url = 'https://gcn.gsfc.nasa.gov/'
resp = requests.get('https://gcn.gsfc.nasa.gov/gcn3_archive.html')
soup = BeautifulSoup(resp.text, 'lxml')
lst_a = soup.find_all('a')
for i in lst_a:
href=i.get('href')
string=str(href)
print (base_url+string)
Но тут мне выдаются не только ссылки с "gcn3_arch_old", но и всякие другие. Наверно, это очень легко, но не пойму как именно и куда именно тут написать, чтоб среди всего найденного мне отбирались только ссылки с "gcn3_arch_old". Такой вот первый вопрос.
Второй вопрос касательно следующего списка ссылок. По моей идее я беру список, который формируется первым кодом, сохраняю его вручную в блокнотный файл, после чего даю его второму коду на обработку. Чтоб программа прошла по всем ссылками (следующего вида: https://gcn.gsfc.nasa.gov/gcn3_arch_old144.html) и выбрала оттуда из каждой такой ссылки только те, что в текстовых названиях содержат: "Konus-Wind detection" или "Konus-Wind observation" (например: <LI><A HREF=gcn3/26975.gcn3>26975</A> Konus-Wind observation of GRB 200131A<br> ). Для этого у меня следующий код:
Python:
from bs4 import BeautifulSoup
import requests
import re
with open("Links.txt") as f:
lines = [line.rstrip('\n') for line in f]
for line in lines:
print(line)
response = requests.get(line)
soup = BeautifulSoup(response.content, "lxml")
lst = soup.find_all(lambda tag: tag.name == 'li' and ("Konus-Wind detection" in tag.text or "Konus-Wind observation" in tag.text))
base_url = "https://gcn.gsfc.nasa.gov/"
for li in lsti:
a = li.find('a')
print(base_url + a.attrs['href'] if a != -1 else '')
Но он не выбирает ссылки. Он по всем почему-то проходится. И на этом моменте я совсем запуталась(
Буду безмерно благодарна за любую помощь!