使用熊猫read_html

时间:2019-06-25 15:17:19

标签: html pandas web-scraping beautifulsoup python-requests

作为工作的一部分,我需要定期检查此page中的特定文档。我发现我可以使用pandas的方法read_html将表成功读入数据框(这很方便,因为我可以通过关键字轻松查询特定文档)。 我现在遇到的问题是,该方法无法解析我需要的链接,而是保存纯文本(特别是我指的是第二列,其数字类似“ 1682/0 / 15-19”)。

我想到的代码非常简单:

import pandas as pd

df = pd.read_html('http://www.vru.gov.ua/act_list')[0]

这给了我一个数据框,其中包含链接所需的所有信息。

是否可以以某种方式获取链接而不是纯文本,如果可以,我该怎么办?

我知道,如果我使用了Requests和BeautifulSoup库,就可以获取href链接,但是我不知道BeautifulSoup库足以做到这一点。 有什么提示还是我应该只学习BeautifulSoup?

1 个答案:

答案 0 :(得分:1)

您可以通过Google的快速搜索找到教程。您将必须遍历标签以编译列表,然后将数据列表转换为数据框:

您也可以像使用read_html()一样拉表,但是您仍然需要返回并获取html链接(请参见下面的选项2):

import pandas as pd
import requests
from bs4 import BeautifulSoup


url = 'http://www.vru.gov.ua/act_list'



response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')

records = []
columns = []
for tr in table.findAll("tr"):
    ths = tr.findAll("th")
    if ths != []:
        for each in ths:
            columns.append(each.text)
    else:
        trs = tr.findAll("td")
        record = []
        for each in trs:
            try:
                link = each.find('a')['href']
                text = each.text
                record.append(link)
                record.append(text)
            except:
                text = each.text
                record.append(text)
        records.append(record)

columns.insert(1, 'Link')
df = pd.DataFrame(data=records, columns = columns)

选项2:

import pandas as pd
import requests
from bs4 import BeautifulSoup

url = 'http://www.vru.gov.ua/act_list'
df = pd.read_html(url)[0]

response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')

links = []
for tr in table.findAll("tr"):
    trs = tr.findAll("td")
    for each in trs:
        try:
            link = each.find('a')['href']
            links.append(link)
        except:
            pass

df['Link'] = links

输出:

print (df.to_string())
     №                             Link           Номер Вид документу Дата прийняття                                    Назва документу Примiтки
0    1  http://www.vru.gov.ua/act/18641    1682/0/15-19       Рішення     20-06-2019  Про звільнення Бурана О.М. з посади судді Мали...         
1    2  http://www.vru.gov.ua/act/18643    1684/0/15-19        Ухвала     20-06-2019  Про задоволення заяви члена Вищої ради правосу...         
2    3  http://www.vru.gov.ua/act/18644    1685/0/15-19        Ухвала     20-06-2019  Про відмову у задоволенні заяви адвоката Рохма...         
3    4  http://www.vru.gov.ua/act/18649    1690/0/15-19        Ухвала     20-06-2019  Про продовження строку розгляду скарги судді Х...         
4    5  http://www.vru.gov.ua/act/18650    1691/0/15-19       Рішення     20-06-2019  Про нагородження заохочувальною відзнакою Вищо...         
5    6  http://www.vru.gov.ua/act/18651    1692/0/15-19       Рішення     20-06-2019  Про інформацію робочої групи Вищої ради правос...         
6    7  http://www.vru.gov.ua/act/18619  1660/3дп/15-19        Ухвала     19-06-2019  Про відкриття дисциплінарної справи стосовно с...         
7    8  http://www.vru.gov.ua/act/18620  1661/3дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарних справ з...         
8    9  http://www.vru.gov.ua/act/18624  1665/3дп/15-19        Ухвала     19-06-2019  Прo задоволення заяви члена Третьої Дисципліна...         
9   10  http://www.vru.gov.ua/act/18626  1667/3дп/15-19        Ухвала     19-06-2019  Прo задоволення заяви члена Третьої Дисципліна...         
10  11  http://www.vru.gov.ua/act/18627  1668/3дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарних справ з...         
11  12  http://www.vru.gov.ua/act/18628  1669/3дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарних справ з...         
12  13  http://www.vru.gov.ua/act/18635  1676/2дп/15-19        Ухвала     19-06-2019  Про відкриття дисциплінарної справи стосовно с...         
13  14  http://www.vru.gov.ua/act/18638  1679/2дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарної справи ...         
14  15  http://www.vru.gov.ua/act/18639  1680/2дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарних справ з...         
15  16  http://www.vru.gov.ua/act/18640  1681/2дп/15-19        Ухвала     19-06-2019  Про відмову у відкритті дисциплінарних справ з...         
16  17  http://www.vru.gov.ua/act/18607    1648/0/15-19       Рішення     18-06-2019  Про звільнення Лучко О.О. з посади судді Івано...         
17  18  http://www.vru.gov.ua/act/18608    1649/0/15-19        Ухвала     18-06-2019  Про залишення без розгляду заяви Лазаренко В.В...         
18  19  http://www.vru.gov.ua/act/18609    1650/0/15-19        Ухвала     18-06-2019  Про залишення без розгляду подання Третьої Дис...         
19  20  http://www.vru.gov.ua/act/18610    1651/0/15-19        Ухвала     18-06-2019  Про залишення без розгляду подання Другої Дисц...         
20  21  http://www.vru.gov.ua/act/18615    1656/0/15-19       Рішення     18-06-2019  Про затвердження висновків членів Вищої ради п...         
21  22  http://www.vru.gov.ua/act/18586    1627/0/15-19       Рішення     13-06-2019  Про звільнення Римлянської Г.О.               ...         
22  23  http://www.vru.gov.ua/act/18589    1630/0/15-19       Рішення     13-06-2019  Про затвердження висновку члена Вищої ради пра...         
23  24  http://www.vru.gov.ua/act/18590    1631/0/15-19       Рішення     13-06-2019                   Про призначення Максимішина С.Т.         
24  25  http://www.vru.gov.ua/act/18591    1632/0/15-19       Рішення     13-06-2019                     Про призначення Гавришука О.М.