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' 列的内容。我尝试过的所有选项都出错了(恐怕这里无法一一列举)。非常感谢任何帮助,因为我对此还很陌生。
您可以比较 list
和 series
之间的 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
我有一个要抓取的 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' 列的内容。我尝试过的所有选项都出错了(恐怕这里无法一一列举)。非常感谢任何帮助,因为我对此还很陌生。
您可以比较 list
和 series
之间的 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