借助BeautifulSoup,从不同的站点中提取表

时间:2019-07-11 14:52:56

标签: python python-3.x pandas beautifulsoup python-requests

我在BeautifulSoup的帮助下从一个站点中提取了一张表。现在,我想使此过程与多个不同的URL循环进行。如果可能的话,我想将这些表提取到不同的excel文档或文档中的不同工作表中。

我一直在尝试通过循环代码并附加df

from bs4 import BeautifulSoup
import requests 
import pandas as pd

xl = pd.ExcelFile(r'path/to/file.xlsx')
link = xl.parse('Sheet1') 

#this is what I can't figure out
for i in range(0,10):
    try:
        url = link['Link'][i]

        html = requests.get(url).content

        df_list = pd.read_html(html)

        soup = BeautifulSoup(html,'lxml')
        table = soup.select_one('table:contains("Fees Earned")')

        df = pd.read_html(str(table))
        list1.append(df)

    except ValueError:
    print('Value')
    pass

#Not as important
a = df[0]

writer = pd.ExcelWriter('mytables.xlsx')
a.to_excel(writer,'Sheet1')
writer.save()

当我打印mylist时,我得到前九个表的'ValueError'(找不到表),并且仅打印最后一个表。但是,当我在不使用for循环的情况下打印它们时,一次只有一个链接有效。 我无法附加df [i]的值,因为它表示“索引超出范围”

0 个答案:

没有答案