如何在不关闭url链接的情况下阅读多个网页

问题描述

我在 Anaconda 中将 Pyhton 3.7 与 Spyder 一起使用。我对 Python 没有太多经验,所以我可能在问题描述中使用了错误的技术术语。

我使用 requests 库从具有网页界面的数据库中读取零件编号列表的过程数据。我使用以下代码。我在 StackOverflow 上找到了大部分内容

# Libraries
import requests
import pandas as pd
import lxml.html as LH

# Get link for part results from hyperlink list
for link in hyperlink_list:
    # Add part number to database link
    process_url = database_link + link
    html = requests.get(process_url).content
    # Read data to dataframe
    df_list = pd.read_html(html)

for 循环从超链接列表中获取一个零件编号的链接,然后修改 process_url 以提取该零件编号的数据。上面的代码运行良好,只是它花费的时间是我的 vba 代码的两倍多(2.2 秒)。看起来它会打开和关闭每个零件号的链接。有什么办法可以在关闭链接之前打开url链接并阅读许多不同的网页。

我假设它会打开和关闭每个部分的链接,因为当我使用 Excel vba 代码为每次读取数据打开和关闭 Internet Explorer 时,我有相同的时间延迟。当我更改 vba 代码以保持资源管理器打开并阅读所有网页时,花了不到一秒钟的时间。

解决方法

通过删除 requests.get(process_url).content,我设法将时间减少了 0.5 秒
并使用pandas直接读取df_list = pd.read_html(process_url)的数据。现在读取表中每个部分的 400 行数据大约需要 1.7 秒。当我必须读取数千个表但仍然比 vba 脚本慢时,这可以节省大量时间。下面是我的新代码

import pandas as pd
# Get link for part results from hyperlink list
for link in hyperlink_list:
   # Add part number to database link
   process_url = database_link + link
   df_list = pd.read_html(process_url)
   df = df_list[-1]