Как извлечь дату с помощью Selenium Webdriver

#python #selenium #selenium-webdriver #web-scraping

#python #selenium #selenium-webdriver #очистка веб-страниц

Вопрос:

Я часами пытался разобраться в этом, но не смог этого сделать.

Вот мой скрипт, использующий Selenium Webdriver на Python, пытающийся извлечь заголовок, дату и ссылку. Я могу извлечь заголовок и ссылку. Однако я застрял при извлечении даты. Не мог бы кто-нибудь, пожалуйста, помочь мне с этим. Очень признателен за ваш ответ.

 import selenium.webdriver
import pandas as pd

frame=[]

url = "https://www.oric.gov.au/publications/media-releases"

driver = selenium.webdriver.Chrome("C:/Users/[Computer_Name]/Downloads/chromedriver.exe")
driver.get(url)

all_div = driver.find_elements_by_xpath('//div[contains(@class, "ui-accordion-content")]')

for div in all_div:
    all_items = div.find_elements_by_tag_name("a")

    for item in all_items:
        title = item.get_attribute('textContent')
        link = item.get_attribute('href')
        date = 

        frame.append({
            'title': title,
            'date': date,
            'link': link,
        })

dfs = pd.DataFrame(frame)
dfs.to_csv('myscraper.csv',index=False,encoding='utf-8-sig')
  

Вот HTML, который меня интересует:

 <div id="ui-accordion-1-panel-0" ...>
      
  <div class="views-field views-field-title">        
    <span class="field-content">
      <a href="/publications/media-release/ngadju-corporation-emerges-special-administration-stronger">
        Ngadju corporation emerges from special administration stronger
      </a>
    </span> 
  </div>  
  <div class="views-field views-field-field-document-media-release-no"> 
    <div class="field-content"><span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="2020-07-31T00:00:00 10:00">
    31 July 2020
    </span> (MR2021-06)</div>  
  </div>  
</div>
      

...
  

Комментарии:

1. Дайте мне ссылку на веб-страницу, с которой вы пытаетесь ее извлечь, и тогда я мог бы попытаться вам помочь.

2. Привет @Эдоардо Россо, это ссылка oric.gov.au/publications/media-releases . Большое спасибо за вашу помощь!

3. @EdoardoRosso html был добавлен к вопросу для удобства

Ответ №1:

Сначала я бы получил все строки.

 from pprint import pprint

import selenium.webdriver

frame = []

url = "https://www.oric.gov.au/publications/media-releases"

driver = selenium.webdriver.Chrome()
driver.get(url)

divs = driver.find_elements_by_css_selector('div.ui-accordion-content')
for div in divs:
    rows = div.find_elements_by_css_selector('div.views-row')
    for row in rows:
        item = row.find_element_by_tag_name('a')
        title = item.get_attribute('textContent')
        link = item.get_attribute('href')
        date = row.find_element_by_css_selector(
            'span.date-display-single').get_attribute('textContent')
        frame.append({
            'title': title,
            'date': date,
            'link': link,
        })

driver.quit()

pprint(frame)
print(len(frame))
  

Ответ №2:

Хорошо, просто найдите <span > со свойством dc:date , сохраните его в WebElement dateElement и возьмите его текст dateElement.text . Это ваша дата в виде строки.

Комментарии:

1. Большое спасибо за вашу помощь! С моей стороны это хорошо работает!