Как проанализировать значения столбца и его href с selenuim - PullRequest
0 голосов
/ 08 октября 2019

я новичок с селеном и разбором данных с сайта. Проблема в том, что у меня есть таблица веб-сайта с таким HTML-кодом:

<table width="580" cellspacing="1" cellpadding="3" bgcolor="#ffffff" id="restab">
 <tbody>
   <tr align="center" valign="middle">
     <td width="40" bgcolor="#555555"><font color="#ffffff">№</font></td>
     <td width="350" bgcolor="#555555"><font color="#ffffff">Название организации</font></td>
     <td width="100" bgcolor="#555555"><font color="#ffffff">Город</font></td>
     <td width="60" bgcolor="#555555"><span title="Число публикаций данной организации на eLibrary.Ru"><font color="#ffffff">Публ.</font></span></td><td width="30" bgcolor="#555555"><span title="Число ссылок на публикации организации"><font color="#ffffff">Цит.</font></span></td>
   </tr>
   <tr valign="middle" bgcolor="#f5f5f5" id="a18098">
     <td align="center"><font color="#00008f">1</font></td>
     <td align="left"><font color="#00008f"><a href="org_about.asp?orgsid=18098">
"Академия информатизации образования" по Ленинградской области</a></font></td> 
     <td align="center"><font color="#00008f">Гатчина</font></td>
     <td align="right"><font color="#00008f">0<img src="/pic/1pix.gif" hspace="16"></font></td>
     <td align="center"><font color="#00008f">0</font></td>
   </tr>
   <tr valign="middle" bgcolor="#f5f5f5" id="a17954">
     <td align="center"><font color="#00008f">2</font></td>
     <td align="left"><font color="#00008f"><a href="org_about.asp?orgsid=17954">
"Академия талантов" Санкт-Петербурга</a></font></td> 
     <td align="center"><font color="#00008f">Санкт-Петербург</font></td>
     <td align="right"><font color="#00008f"><a href="org_items.asp?orgsid=17954" title="Список статей данной организации на eLibrary.Ru">3</a><a href="org_profile.asp?id=17954" title="Анализ публикационной активности организации"><img src="/pic/stat.gif" width="12" height="13" hspace="10" border="0"></a></font></td>
     <td align="center"><font color="#00008f">0</font></td>
   </tr>
 </tbody>
</table>

, и мне нужно получить все значения этой таблицы и href для каждого значения слева td

Я пытался использовать Xpath, но пишет какую-то ошибку, как это сделать лучше? В заключение мне нужно получить dataframe с табличными значениями + дополнительный столбец с href левого столбца

1 Ответ

0 голосов
/ 08 октября 2019

Сначала попробуйте использовать pandas.read_html (). См. Пример кода ниже.

Если это не сработает, используйте браузер, использующий контекстное меню, например Mozilla Firefox (Inspect Element) или Google Chrome (Инструменты разработчика), чтобы найти CSS или Xpath. Затем добавьте CSS или Xpath в Selenium.

Другим полезным инструментом для поиска сложных CSS / Xpath является плагин для браузера Inspector Gadget.

import pandas as pd

# this is the website you want to read ... table with "Minimum Level for Adult Cats"
str_url = 'http://www.felinecrf.org/catfood_data_how_to_use.htm'

# use pandas.read_html()
# https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html
list_df = pd.read_html(str_url, match='DMA')

print('Number of dataframes on the page: ', len(list_df))
print()

for idx, each_df in enumerate(list_df):
    print(f'Show dataframe number {idx}:')
    print(each_df.head())
    print()

# use table 2 on the page
df_target = list_df[2]

# create column headers
# https://chrisalbon.com/python/data_wrangling/pandas_rename_column_headers/
header_row = df_target.iloc[0]

# Replace the dataframe with a new one which does not contain the first row
df_target = df_target[1:]

# Rename the dataframe's column values with the header variable
df_target.columns = header_row

print(df_target.head())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...