Python:从 Excel 列的列表中查找字符串

Python: Find string from list in Excel column

我有一个要抓取的 url 列表(来自 txt 文件)和一个包含抓取数据的 Excel 文件,包括 url。我定期向 txt 文件添加新的 urls,并希望能够在每次之后 运行 代码,仅在新添加的 urls(第一列,名为 'URLS').我想我会通过让它检查列表中的 url 是否已经在 Excel 中来做到这一点,并且只在不在的情况下才做一些事情,但我仍然不知道如何做到这一点(我已经使用 openpyxl 和 pandas 尝试了多个选项)。

我的 pandas 设置如下所示:

import pandas as pd

df = pd.read_excel('scrapeddata.xlsx')
pd.set_option('display.max_colwidth', None) #otherwise it would cut off the urls

with open('urls.txt', 'r') as f:
    urls = f.readlines()
    urls = [url.strip() for url in urls]  #strip `\n`

for url in urls:
    

对于像这样的 openpyxl:

from openpyxl import load_workbook

wb = openpyxl.load_workbook('articles.xlsx')
ws = wb.active

with open('urls.txt', 'r') as f:
    urls = f.readlines()
    urls = [url.strip() for url in urls]  #strip `\n`

for url in urls:
    

然后我想我需要某种 if 子句来匹配 url 与 Excel 中 'URLS' 列的内容。我尝试过的所有选项都出错了(恐怕这里无法一一列举)。非常感谢任何帮助,因为我对此还很陌生。

您可以比较 listseries 之间的 url 并在增量上进行操作:

list(set(urls) - set(df['URLS'].to_list())) 

示例

import pandas as pd

urls = ['https://www.google.com','https://www.google.at','https://www.google.de','https://www.yahoo.de']

data = {'SITE': ['google','google','yahoo'],
        'URLS': ['https://www.google.com','https://www.google.de','https://www.yahoo.de']
        }
df = pd.DataFrame(data)

delta = list(set(urls) - set(df['URLS'].to_list()))

for url in delta:
    print(url)

输出

https://www.google.at