Как улучшить этот скрипт python? - PullRequest
0 голосов
/ 25 апреля 2020

Краткий контекст, я начал Python две недели go, поэтому не стесняйтесь исправлять любые ошибки или улучшения, которые вы видите. Я пытаюсь собрать данные из списка результатов клуба на сайте www.fff.fr.

Мой способ организации:

  1. Go на главную страницу
  2. Принимать куки
  3. Использовать строку поиска для названия города
  4. Получить список результатов
  5. Следить за каждым URL страницы результатов
  6. Go каждому подразделу «Персонал»
  7. Извлечение данных с этой страницы

Я начал создавать приведенный ниже код 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
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...