Спарсить страницу, помощь Xpath или регулярное выражение

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Привет. Парни помогите, пожалуйста. Нужно спарсить ТВ программу, вторые сутки, пытаюсь спарсить страницу, все криво получается. Нужно из ТВ программы спарсить фильмы и сериалы, там стоят галки фильм и сериал.
https://tv.mail.ru/moskva/
Почему именно с майла, в других программах например яндекс, она выходит слишком поздно на пару дней позже майла, а других не определить, фильм или сериал.
Майл самая подходящая там есть две галки, и выделяется фильм или сериал. В идеале еще бы как нажать на ссылку чтоб открылось окно, но этого не получиться там все на аякс подгружается.
Надо просто спарсить все сериалы и все фильмы.
1610714970780.png1610715012127.png
1610715299793.png
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
C#:
//div[@class='p-programms__item p-programms__item_has-genre p-programms__item_genre139 p-programms__item_has-player js-genre-139']/div[2]/span[2]/span[1]|//div[@class='p-programms__item p-programms__item_has-genre p-programms__item_genre138 p-programms__item_has-player js-genre-138']/div[2]/span[2]/span[1]
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
C#:
//i/preceding-sibling::span[contains(@class, 'name-link')]
Спасибо большее, это уже лучше, чем у меня, может еще будут варианты
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
У меня получился такой XPath:
Код:
//i[@class='p-programms__item__icon' and (@title='Сериал' or @title='Фильм')]/preceding-sibling::span[contains(@class, 'p-programms__item__name-link')]
Но в нём я привязывался к словам "Сериал" и "Фильм", возможно что при использовании не русских прокси этот текст изменится и XPath сломается.

В идеале еще бы как нажать на ссылку чтоб открылось окно, но этого не получиться там все на аякс подгружается.
А почему не получится? Можно вот такой использовать путь:
Код:
(//i[@class='p-programms__item__icon' and (@title='Сериал' or @title='Фильм')]/preceding-sibling::span[contains(@class, 'p-programms__item__name-link')])[3]
Вместо числа в квадратных скобках, в конце, можно использовать переменную.

C#:
//i/preceding-sibling::span[contains(@class, 'name-link')]
Этот XPath захватывает и спортивные ссылки :-)
 
Последнее редактирование:
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Спасибо большее, а как узнать что суда вставить
C#:
[USER=46442]class[/USER]
почту?
Я хотел прокликать чтобы год и страну определить, но он сам сайт такой через раз может открываться, прокси использовать не буду, попробую прокликать если получиться)

1610719351349.png
Юзер не получается найти,
C#:
[USER=46442]class[/USER]
там ид должно быть? по точнее можно пожалуйста?
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Спасибо большее, а как узнать что суда вставить
C#:
[USER=46442]class[/USER]
почту?
Я хотел прокликать чтобы год и страну определить, но он сам сайт такой через раз может открываться, прокси использовать не буду, попробую прокликать если получиться)
Вместо [USER=46442]class[/USER] надо вставить
Код:
@class
(это форум сделал автозамену)
Я отредактировал прошлое сообщение, теперь там всё ОК,

Я хотел прокликать чтобы год и страну определить, но он сам сайт такой через раз может открываться
А Вы посмотрите, какой запрос уходит при клике. Возможно он не сложный и его легко будет составить? Сможете ускорить шаблон переведя часть логики на запросы.
 
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Все получается, на запросах. Подскажите, момент как можно ид определить tv.mail.ru/ajax/event/?id=152245657&region_id=70
id=152245657 ?
1610720065241.png
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
70746
 
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Только как определить что это относиться к сериалы или фильму, как вариант все пройти и собрать ид, а потом делать запросы)
Можете попробовать вот такой XPath:
Код:
//i[@class='p-programms__item__icon' and (@title='Сериал' or @title='Фильм')]/preceding-sibling::span[contains(@class, 'p-programms__item__name-link')]/ancestor::div[@data-id][1]
 
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
От души, все проще получилось, Вы подали идею гет запросы делать, беру дом, сериалы и фильмы, отдельно с id, а дальше запросами.

1610733013060.png1610733083443.png
 
  • Спасибо
Реакции: nicanil

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)