【问题标题】:How to read several web pages without closing url link如何在不关闭 url 链接的情况下阅读多个网页
【发布时间】:2021-02-19 15:40:12
【问题描述】:

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

我使用请求库从带有网页界面的数据库中读取零件编号列表的过程数据。我使用以下代码。我在 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 代码以保持资源管理器打开并阅读所有网页时,只用了不到一秒钟。

【问题讨论】:

    标签: python python-3.x python-requests-html


    【解决方案1】:

    我设法通过删除 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]
    

    【讨论】:

      猜你喜欢
      • 2016-05-18
      • 1970-01-01
      • 2013-04-12
      • 2013-10-04
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2014-07-30
      相关资源
      最近更新 更多