无法在 excel 文件中写入新填充的结果(来自反向搜索)

Unable to write newly populated results (derived from reverse search) in an excel file

我在 python 中编写了一个脚本,它能够从 excel 文件中获取 search input,将其放入我的爬虫中的 input_val 变量中,然后获取与搜索参数匹配的 image link。当我打印它时,我得到了准确的结果。我正在使用 openpyxl 来读取和写入值。

但是,当我尝试在新 excel 文件中的每个搜索关键字旁边写入填充的结果时,我遇到了困难。

在我当前的 excel 名为 item.xlsx 的文件中有三个搜索关键字(三部电影)。它们是:

Shutter Island 
Black Swan
True Grit

如果我 运行 我现有的爬虫没有任何修改,那么新文件中的结果如下所示:

Shutter Island    
Black Swan        
True Grit         
image_link 1
image_link 2
image_link 3

我希望我的抓取工具能够抓取图像链接并将这些链接写入新的 excel 文件中每部电影的旁边。结果输出应如下所示:

Column A          Column B
Shutter Island    image_link 1
Black Swan        image_link 2
True Grit         image_link 3

这是我目前尝试过的方法:

import requests
from bs4 import BeautifulSoup
from openpyxl import load_workbook

wb = load_workbook('item.xlsx')
ws = wb['Sheet1']

for row in range(1, ws.max_row + 1):
    input_val = ws["A" + str(row)].value  #the search keyword holds here

    response = requests.get("http://www.boxofficemojo.com/search/?",params = {'q':input_val})
    soup = BeautifulSoup(response.text,"lxml")
    table = soup.select("table")[1]
    for items in table.select('tr')[4:5]:
        [elem.extract() for elem in soup.select("script")] #kicking out script from result
        data = [img['src'] for img in items.select('td img')]
        ws.append(data)
        wb.save("new_one.xlsx")

下面我提供了一个示例来说明如何执行此操作。在 B 列中,有一串 url。我还添加了第三列,它利用 excel 中的 HYPERLINK 函数将 A 列的文本和 link 显示到 B 列中所需的 url 提供的文本。

import requests
from bs4 import BeautifulSoup
from openpyxl import load_workbook

wb = load_workbook('item.xlsx')
ws = wb['Sheet1']

for row in range(1, ws.max_row + 1):
    input_val = ws["A" + str(row)].value  #the search keyword holds here
    response = requests.get("http://www.boxofficemojo.com/search/?",params = {'q':input_val})
    soup = BeautifulSoup(response.text,"lxml")
    table = soup.select("table")[1]
    for items in table.select('tr')[4:5]:
        [elem.extract() for elem in soup.select("script")] #kicking out script from result
        data = [img['src'] for img in items.select('td img')]
        if row != 1:
            cell_str = data[0]
            ws.cell(row=row, column=2).value = '%s' % (cell_str)
            ws.cell(row=row, column=3).value = '=HYPERLINK(B%d, A%d)' % (row, row)
        else:
            ws.cell(row=row, column=2).value = 'Column B'
            ws.cell(row=row, column=3).value = 'Hyperlink'
        wb.save("new_one.xlsx")

输出: