在循环中使用BeautifulSoup从不同站点提取表

2024-04-24 00:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在BeautifulSoup的帮助下从一个站点提取了一个表。现在我想用几个不同的URL:s使这个过程保持循环。如果可能的话,我想将这些表提取到不同的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()

对于前九个表,我得到一个“ValueError”(找不到表),打印mylist时只打印最后一个表。但是,当我不使用for循环打印它们时,一次只打印一个链接,就可以了。 我不能附加df[I]的值,因为它表示“索引超出范围”


Tags: to文档importdfhtmlastablelink