首页 > 解决方案 > 通过使用 python 跳过空白单元格来读取包含 url 的列/列表

问题描述

  1. 我在谷歌表中有一个列 all_sheet_url,其中有一些 url 链接。我需要一一阅读并从中获取数据。因为我想跳过的列中也有一些空白/NA。

我已尝试使用以下代码,但它无法仅读取 url 并跳过列中的空格(如果有)。

sheet_url = df['Links']
    for line in sheet_url:
        #if line in sheet_url:
        try:
            url = line
            req = requests.get(url, stream=True)
            r = requests.get(url, timeout=10)
            r.raise_for_status()
            # checking if it is an html page
            content_type = req.headers.get('content-type')
            if 'html' in content_type or 'application/xhtml+xml' in content_type:
                # reading the contents
                html = req.content
                # req.close()
                output = html
                print(output)
                continue
            else:
                 print("\t{} is not an HTML file".format(url))
                 #req.close()
        except Exception:
            return

请提出相同的方法/更正,谢谢。

  1. 我需要从 url 读取数据范围并写入主谷歌表。我能够一次读取和写入单个 url。但是,我希望它是动态的,以便它应该通过获取放置在列中的 url 的索引来自动读取和写入来自 url 的数据范围。这是我尝试过的代码,
wks = gc.open_by_url(url)
wks1 = gc.open_by_url(url1)
  # Defining Range of cells to read
range1 = wks1.range('A5:A9')
range2 = wks1.range('A5:B9')
range3 = wks1.range('G11:L19')
range4 = wks1.range('B12:C13')

# Defining Range of cells to write
range1n = wks.range('CO43:CS43')
range2n = wks.range('CT43:DR43')
range3n = wks.range('DS43:FK43')
range4n = wks.range('FL43:FM43')
range_names = [['range1', 'range2', 'range3', 'range4']]

for range1_cell, range1n_cell in zip(range1, range1n):
    range1n_cell.value = range1_cell.value
    wks.update_cells(range1n)

标签: pythonpandasautomationpython-requests

解决方案


pandas 有一种dropna方法可以完全满足您的需求。

文档:pandas.Series.dropna

在您的 cas 中,可能只是与第一行相同的处理代码:

all_sheet_url = df['Workbook Link'].dropna()

推荐阅读