我有一個要抓取的 url 串列(來自 txt 檔案)和一個包含抓取資料的 Excel 檔案,包括 url。我定期向 txt 檔案添加新的 url,并希望每次之后都能夠運行代碼,僅在新添加的 url 上(第一列,名為“URLS”)。我想我會通過讓它檢查串列中的 url 是否已經在 Excel 中并且只在不是時才做某事來做到這一點,但我一直堅持如何做到這一點(我嘗試了多個選項使用openpyxl 和熊貓)。
我的 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”列的內容相匹配。我嘗試過的所有選項都出錯了(恐怕它們太多了,無法在這里命名)。非常感謝任何幫助,因為我對此仍然很陌生。
uj5u.com熱心網友回復:
您可以比較 和 之間的 urllist并對seriesdelta 進行操作:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445141.html
