Создайте список ссылок со страницы https://www.stubhub.com/new-york-rangers-tickets/performer/2764/, которые содержат текст New York Rangers - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь создать список в python всех ссылок со страницы, содержащей определенную строку. Например, я хотел бы, чтобы все ссылки, содержащие «Нью-Йорк Рейнджерс @» с этой страницы https://www.stubhub.com/new-york-rangers-tickets/performer/2764/.

Спасибо за помощь - извините, если это глупый вопрос, но не смог его нигде не найти.

Ответы [ 3 ]

0 голосов
/ 25 января 2020

Ну, во-первых, вам нужно получить содержимое веб-страницы, по которой вы хотите выполнить поиск по ссылкам. Я настоятельно рекомендую использовать запросы , простую HTTP-библиотеку для Python:

import requests

response = request.get(https://www.stubhub.com/new-york-rangers-tickets/performer/2764/)

Этот указанный c URL-адрес по некоторым причинам требует заголовка User-Agent, поэтому вы должны отправить один по запросу:

url = 'https://www.stubhub.com/new-york-rangers-tickets/performer/2764/'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0'
response = requests.get(url, headers={'User-Agent':user_agent})

Затем вы можете начать анализировать содержимое страницы, используя beautifulsoup4 . Вы можете использовать метод find_all, передавая скомпилированное регулярное выражение в качестве параметра text, чтобы найти все теги a, которые содержат определенный текст:

from bs4 import BeautifulSoup
import re

soup = BeautifulSoup(response.content, "html.parser")
rangers_anchor_tags = soup.find_all("a", text=re.compile(r".*\bNew York Rangers at\b.*")
urls = [anchor["href"] for anchor in rangers_anchor_tags]

urls, тогда будет список URL-адресов, в которых соответствующий внутренний текст тега привязки содержит соответствующую строку.

0 голосов
/ 26 января 2020

Используя Selenium вам не понадобится и для создания списка всех ссылок, например href атрибутов со страницы https://www.stubhub.com/new-york-rangers-tickets/performer/2764/, которая содержит текст Нью-Йорк Рейнджерс вам нужно вызвать WebDriverWait для visibility_of_all_elements_located(), и вы можете использовать следующую Стратегию локатора :

0 голосов
/ 25 января 2020

Данные встроены в страницу внутри тега <srcipt>. Вы можете использовать этот пример для анализа данных (с модулями re и json):

import re
import json
import requests

headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0'}
url = 'https://www.stubhub.com/new-york-rangers-tickets/performer/2764/'

txt = requests.get(url, headers=headers).text

data = json.loads(re.search(r'window.__INITIAL_STATE__\s*=\s*(.*})<', txt)[1])

# print(json.dumps(data, indent=4)) # <-- uncomment to see all data (prices, dates, etc.)

for event in data['EVENT_SEO_LIST']['events']:
    if 'PARKING PASSES ONLY' in event['name']:
        continue
    print('{:<45} {}'.format(event['name'], 'https://www.stubhub.com/' + event['webURI']))

Отпечатки:

Detroit Red Wings at New York Rangers         https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-1-31-2020/event/104217508/
New York Rangers at Detroit Red Wings         https://www.stubhub.com/detroit-red-wings-tickets-detroit-red-wings-detroit-little-caesars-arena-2-1-2020/event/104215245/
Dallas Stars at New York Rangers              https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-3-2020/event/104212773/
Toronto Maple Leafs at New York Rangers       https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-5-2020/event/104215469/
Buffalo Sabres at New York Rangers            https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-7-2020/event/104217518/
Los Angeles Kings at New York Rangers         https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-9-2020/event/104214839/
New York Rangers at Winnipeg Jets Tickets (Replica Hall of Fame Banner Giveaway) https://www.stubhub.com/winnipeg-jets-tickets-winnipeg-bell-mts-place-2-11-2020/event/104212882/
New York Rangers at Minnesota Wild            https://www.stubhub.com/minnesota-wild-tickets-minnesota-wild-saint-paul-xcel-energy-center-2-13-2020/event/104216234/
New York Rangers at Columbus Blue Jackets     https://www.stubhub.com/columbus-blue-jackets-tickets-columbus-blue-jackets-columbus-nationwide-arena-2-14-2020/event/104212942/
Boston Bruins at New York Rangers             https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-16-2020/event/104217520/
New York Rangers at Chicago Blackhawks        https://www.stubhub.com/chicago-blackhawks-tickets-chicago-blackhawks-chicago-united-center-2-19-2020/event/104213910/
New York Rangers at Carolina Hurricanes       https://www.stubhub.com/carolina-hurricanes-tickets-carolina-hurricanes-raleigh-pnc-arena-2-21-2020/event/104212812/
San Jose Sharks at New York Rangers           https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-2-22-2020/event/104217524/
New York Rangers at New York Islanders        https://www.stubhub.com/new-york-islanders-tickets-new-york-islanders-uniondale-nycb-live-home-of-the-nassau-veterans-memorial-coliseum-2-25-2020/event/104354662/
New York Rangers at Montreal Canadiens        https://www.stubhub.com/montreal-canadiens-tickets-montreal-bell-centre-2-27-2020/event/104215418/
New York Rangers at Philadelphia Flyers       https://www.stubhub.com/philadelphia-flyers-tickets-philadelphia-flyers-philadelphia-wells-fargo-center-philadelphia-2-28-2020/event/104212712/
Philadelphia Flyers at New York Rangers       https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-3-1-2020/event/104215027/
St. Louis Blues at New York Rangers           https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-3-3-2020/event/104217528/
Washington Capitals at New York Rangers       https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-3-5-2020/event/104215030/
New Jersey Devils at New York Rangers         https://www.stubhub.com/new-york-rangers-tickets-new-york-rangers-new-york-madison-square-garden-3-7-2020/event/104215474/
New York Rangers at Dallas Stars              https://www.stubhub.com/dallas-stars-tickets-dallas-stars-dallas-american-airlines-center-3-10-2020/event/104214902/
...