Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 27.07.2021
Сообщений: 2
1

Из полученного списка ссылок вывести результаты только тех, которые начинаются с 24hours

01.08.2021, 05:48. Показов 2518. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

все еще пишу парсер для livinternet и поскольку границу парсинга указать я не смог (точнее смог после долгих мучений, но это не имеет смысла, так как там есть лишние значения). Я решил зайти с другой стороны, выделить нужные мне значения через общий признак. Теперь процесс выглядит так.

1. Собираем с веб страницы все значения тэга <a>, то есть все ссылки ( сделано )
2. Выбрать только те ссылки, в которых url начинается на 24hours.html, ведь именно их анкоры и являются поисковыми фразами, которые я и хочу собрать. ( именно эту операцию в данный момент я не знаю как сделать)
3. Из выбранных ссылок вывести список анкоров, они же и поисковые фразы, которые мне нужны ( в целом с этим тоже нет проблем, ведь список анкоров я смог вывести, однако учитывая то, что я не смог выбрать только те ссылки, url которых начинается с 24hours.html, у меня выводятся анкоры всех ссылок со страницы, элементов меню и др.

Собственно вот мой код сейчас

Python
1
2
3
4
5
6
import urllib.request
from bs4 import BeautifulSoup
html = urllib.request.urlopen('https://www.liveinternet.ru/stat/ru/auto/queries.html?id=19207&id=19188&id=19221&id=610&id=19945&per_page=100&ok=+OK+')
soup = BeautifulSoup(html, 'html.parser')
for i in soup.find_all('a', href=True):
    print(i.text)
Осталось только добиться выполнения второго пункта, что бы выводились анкоры только нужных мне ссылок. Как это сделать?

По сути нужно оставить только те строки, в которых встречается значение 24hours.html , пытался через регулярные выражения сделать, но так и не смог. Прошу помочь, буду очень благодарен.

Добавлено через 1 час 7 минут
Вообще через программу я выделил вот такое регулярное выражение (?<=0=1">).*?(?=<), которое на раз два парсит нужный мне результат, но вот как его прописать в питоне я так и не могу понять, вроде столько библиотек, уже целые сутки гуглю и прочитал все возможные варианты и через регулярки и через селект и через еще кучу способов использование и совмещения и выделения. Ну почему нету простой функции спарсить все ссылки с таким то признаком и просто прописать признак в скобках, ну почему просто нельзя задать регулярку и указать в ней что идет перед текстом и что после него. Все селекты и регулярки и задания границ парсинга что я нашел на бесчисленных сайтах которые сегодня пересмотрел не дали результата. Прошу помогите! Что я делаю не так...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2021, 05:48
Ответы с готовыми решениями:

Найти сумму тех элементов списка, которые начинаются на заданную цифру
Использовать List.fold. Найти сумму тех элементов списка, которые начинаются на заданную цифру.

Сформировать результирующий массив В, элементами которого являются суммы элементов только тех строк матрицы А, которые начинаются с К положительных чи
Дана целочисленная матрица А(Н,Н). Сформировать результирующий массив В, элементами которого...

Вывести только те слова, которые начинаются с прописной буквы
Работа с текстовыми файлами Дана строка. Вывести только те слова сообщения, которые начинаются с...

Вывести только те слова, которые начинаются на гласную букву
Помогите написать программу, в которой есть два текстовых поля (richTextBox). В 1 текстовое поле...

1
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
01.08.2021, 09:55 2
Лучший ответ Сообщение было отмечено Ruskrol как решение

Решение

Ruskrol, да че тут мудрить-то?
Python
1
2
3
4
5
for i in soup.find_all('a', href=True):
    if re.match(r'<a href="24hours.html', str(i)):
        print(i)  # ссылка
        print(i.text)  # анкор
        print()
Добавлено через 5 минут
Да и зачем тут регулярки?
Python
1
2
    if str(i).startswith('<a href="24hours.html'):
        print(i.text)
1
01.08.2021, 09:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2021, 09:55
Помогаю со студенческими работами здесь

Вывести только те слова сообщения, которые начинаются с прописной буквы
Вывести только те слова сообщения, которые начинаются с прописной буквы string str ; ...

Вывести только те слова сообщения, которые начинаются с прописной буквы
Не могу написать программы( помогите пожалуйста!! 1. Вывести только те слова сообщения, которые...

Вывести только те строки текста, которые начинаются с латинского символа A
Нужно вывести только те строки, которые начинаются с латинского символа A. ...

Файл: вывести только слова, которые начинаются с гласных букв
Прочитать английский текст из файла и выводит только те слова которые начинаются с гласных букв.

Вывести в richTextBox только слова, которые начинаются с гласной буквы
Добрый времени суток, задание состоит в том, чтоб создать приложение Microsoft Forms, которое будет...

Вывести только те слова сообщения, которые начинаются и заканчиваются на заданную букву
Вывести только те слова сообщения, которые начинаются и заканчиваются на заданную букву. Очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru