Получение ссылок, месяца и даты из таблицы с использованием Selenium Webdriver Python, но получение веб-элемента не имеет атрибута len () - PullRequest
0 голосов
/ 06 мая 2020

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

Веб-сайт https://mat.maharashtra.gov.in/1111/Mumbai- (2019) #

Итак, я хочу сохранить в словаре дату, например 07 ЯНВАРЯ 2019, и ссылку и записать в файл. Но я не могу получить месяц

'' '

               for row in class_name.find_elements_by_tag_name("tr"):
                num_row = len(row) + 1
                for i in range(2,num_row):
                    column = row[i].find_elements_by_tag_name("td")
                    num_col = len(column)+1
                    for c in range(2,num_col):
                        if 2<c<7:
                            months = driver.find_element(By.XPATH,'/html/body/form[1]/div[3]/div[2]/div[2]/div/div/table['+str(j)+']/tbody/tr[1]/th[2]/p/strong').text
                        elif 6<c<12:
                            months = driver.find_element(By.XPATH,'/html/body/form[1]/div[3]/div[2]/div[2]/div/div/table['+str(j)+']/tbody/tr[1]/th[3]/p/strong').text
                        elif 11<c<17:
                            months = driver.find_element(By.XPATH,'/html/body/form[1]/div[3]/div[2]/div[2]/div/div/table['+str(j)+']/tbody/tr[1]/th[4]/p/strong').text
                        elif c>16:
                            months = driver.find_element(By.XPATH,'/html/body/form[1]/div[3]/div[2]/div[2]/div/div/table['+str(j)+']/tbody/tr[1]/th[5]/p/strong').text

' ''

Я пробовал описанное выше, но получаю, что веб-элемент не имеет атрибута len ( ), даже если я использовал find_elements_by tag_name. Может ли кто-нибудь помочь, как создать словарь,

Заранее спасибо

Edit-: Я хочу сохранить дату, например, 07 ЯНВАРЯ 2019, а январь нужно удалить из главы table, поэтому мне нужен способ очистить ссылки, а также дату и месяц (которые должны быть извлечены из заголовка таблицы) ссылок

1 Ответ

1 голос
/ 06 мая 2020

Это должно дать вам дату и URL-адреса, и вы можете изменить их в соответствии с вашими потребностями:

import requests
import lxml.html as lh
from urllib.request import urljoin

url = 'https://mat.maharashtra.gov.in/1111/Mumbai-(2019)#'
base_url = 'https://mat.maharashtra.gov.in'

resp = requests.get(url)
doc = lh.fromstring(resp.text)

tables = doc.xpath('//table')
for table in tables:
    data = table.xpath('.//td/p/a')
    for d in data:
        link = d.attrib['href']
        if not link.startswith('http'):
            link = urljoin(base_url, link)
        date = link.split('/')[-1][:10]
        print(date, link)

Вывод:

07.01.2019 https://mat.maharashtra.gov.in/Site/Upload/Pdf/07.01.2019 (C).PDF
14.01.2019 https://mat.maharashtra.gov.in/Site/Upload/Pdf/14.01.2019 (C).PDF
21.01.2019 https://mat.maharashtra.gov.in/Site/Upload/Pdf/21.01.2019 (A).PDF

et c.

...