Краткий контекст, я начал Python две недели go, поэтому не стесняйтесь исправлять любые ошибки или улучшения, которые вы видите. Я пытаюсь собрать данные из списка результатов клуба на сайте www.fff.fr.
Мой способ организации:
- Go на главную страницу
- Принимать куки
- Использовать строку поиска для названия города
- Получить список результатов
- Следить за каждым URL страницы результатов
- Go каждому подразделу «Персонал»
- Извлечение данных с этой страницы
Я начал создавать приведенный ниже код python, который пока не работает. Я был бы очень заинтересован в отзывах о том, как на самом деле заставить его работать.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from shutil import which
chrome_path = which("chromedriver")
driver = webdriver.Chrome(executable_path=chrome_path)
driver.get("https://fff.fr")
cookie_btn = driver.find_element_by_id("didomi-notice-agree-button")
cookie_btn.click()
search_input = driver.find_element_by_xpath("/html//form[@id='proximiteSearch']//input[@id='fff_club_form_club_near_to_search_address']")
search_input.send_keys("Paris")
search_input.send_keys(Keys.ENTER)
self.html = driver.page_source
driver.close()
def parse(self, response):
resp = Selector(text=self.html)
clubs = resp.xpath("(//ul[contains(@id, 'listresulclub')])/li/text()")
for club in clubs:
name = club.xpath(".//text()").get()
name_link = club.xpath(".//@href").get()
url = f"https://www.ffr.fr{name_link}"
absolute_url = url[:-10] + "/le-staff"
# absolute_url = response.urljoin()
yield scrapy.Request(url=absolute_url, meta={'club_name':name})
#yield response.follow (url = name_link, callback=self.parse_country, meta={'club_name': name})
def parse_country(self, response):
name = response.request.meta['club_name']
contacts = response.xpath("//div[@class='coor-block-content']/ol")
for contact in contacts:
contact_nom = contact.xpath(".//li[1]/text()").get()
yield {
'club_name': name,
'correspondant_nom': contact_nom
}