Как извлечь данные с защищенного веб-сайта, такого как Bloomberg

Я пытаюсь очистить элемент по этому URL-адресу:

"https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker"

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

пока что я пробовал это

 def parse(self, response):
   yield scrapy.Request('https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker -H x-crawlera-use-https:1',
        headers = {'X-Crawlera-Session': create,
        'X-Crawlera-Timeout': 40000,
        'X-Crawlera-Max-Retries': 5,
        'X-Crawlera-Cookies': disable,
        'X-Crawlera-Session': self.session_id
        },
        callback=self.parse_sub,
        )

 def parse_sub(self, response):
    response.xpath("//h1[@class = 'lede-text-v2__hed']").extract_first()
    response.xpath("//meta[@property = 'og:title']/@content").extract_first()
    response.xpath("//time[@class = 'article-timestamp']/@datetime").extract_first()
   print(response.text)

Я тоже пользуюсь сканером, но он продолжает определять меня как робота

Не могли бы вы принять ответ, используя только Селен?

undetected Selenium 11.06.2019 08:31

да, я буду @DebanjanB

Christian Read 11.06.2019 08:37

Итак, вы хотите извлечь Tesla нанесла еще один удар, когда Barclays назвал ее «нишевым автопроизводителем» и 30 мая 2019 г., 17:26 GMT+5:30 Обновлено 30 мая 2019 г., 19:21 GMT+5:30 оба... не так ли?

undetected Selenium 11.06.2019 08:39

Да, ты прав @DebanjanB

Christian Read 11.06.2019 08:40

@DebanjanB Мне просто нужно только 30 мая 2019 г., 17:26 по Гринвичу + 5:30 «не обновлено», спасибо

Christian Read 11.06.2019 08:46

попробуйте библиотеку python, сканирование веб-сайта с помощью http-запросов не будет работать github.com/msitt/blpapi-python. Вот для чего нужны API

E.Serra 11.06.2019 08:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
704
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя только для извлечения заглавие, т.е. Tesla нанесла еще один удар, когда Barclays назвал ее «нишевым автопроизводителем», и дата публикации, т.е. 30 мая 2019 г., 17:26 GMT+5:30, вы должны вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать следующее решение:

  • Кодовый блок

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get('https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker')
    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='markets']//following:: h1[1]"))).get_attribute("innerHTML"))
    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='markets']//following:: h1[1]//following::div[@class='lede-text-v2__times']/time[@itemprop='datePublished']"))).get_attribute("innerHTML"))
    driver.quit() 
    
  • Выход консоли:

    Tesla Dealt Another Blow When Barclays Calls It a ‘Niche Carmaker’
    May 30, 2019, 5:26 PM GMT+5:30
    
  • Примечание: Вы должны добавить следующие импорты:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Я пробую ваш код, но у меня ошибка «WebDriverWait» не определена

Christian Read 11.06.2019 09:37

Привет, @debanjanB все еще имеет «имя ошибки« драйвер »не определено», я не знаю, почему

Christian Read 11.06.2019 09:42

@ChristianRead Проверьте обновление ответа и сообщите мне статус

undetected Selenium 11.06.2019 09:44

Привет @debanjanB, на самом деле я пробую это на скрап-шелле, я не знаю, сработает ли оно там. Я попытался поместить ваш код в «def parse (self, response):» без ответа на печать. и если я не положу его внутрь, у меня возникнет ошибка.

Christian Read 11.06.2019 09:49

@ChristianRead Я не думаю, что вы можете выполнить блок кода в оболочке scrapy. Это чистый Селен с Питон

undetected Selenium 11.06.2019 09:51

Где я могу протестировать ваш код? Извините, я действительно новичок в селене

Christian Read 11.06.2019 09:53

Любая оболочка Python после установки пакетов Selenium.

undetected Selenium 11.06.2019 09:54

Я не знаю, почему я получаю эту ошибку «Сообщение: исполняемый файл geckodriver должен находиться в PATH». Я добавил весь импорт, который вы предложили

Christian Read 11.06.2019 10:06

Попробовав поработать над вашим кодом, я запустил его, спасибо, @debanjanB.

Christian Read 11.06.2019 16:17

Другие вопросы по теме