【问题标题】:pandas in a for loop fails to append a dict fetched from seleniumfor 循环中的 pandas 无法附加从 selenium 获取的字典
【发布时间】:2021-02-15 01:25:01
【问题描述】:

我正在尝试抓取包含关键字的 url 并将它们保存到我的 csv 中。但是脚本无法附加它们。

from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def find_film_link(link):
    if "film" in link:
        return True
    else:
        return False

film_list =  pd.read_csv("film_list.csv", index_col=0)

################################################################################

driver = webdriver.Chrome("D:\Documents\ADAM\Project\CSFD Bot\chromedriver.exe")
driver.get("https://www.csfd.cz/zebricky/nejlepsi-filmy/?show=complete")
elems = driver.find_elements_by_xpath("//a[@href]")
for elem in elems:
    scraped_link = elem.get_attribute("href")
    if find_film_link(scraped_link) == True:
        film_list_updated = film_list.append({"link": scraped_link}, ignore_index=True)
        print(film_list_updated)
        film_list_updated.to_csv("film_list.csv")
    else:
        pass
driver.quit()

.csv 已经包含一些手动条目(前 8 个)。脚本执行后,.csv 最终看起来像这样(只附加了一个链接,但附加了三次?):

0   https://www.csfd.cz/film/231260-star-wars-klon...
1   https://www.csfd.cz/film/820012-drsny-mesto/pr...
2   https://www.csfd.cz/film/902757-damsky-gambit/...
3   https://www.csfd.cz/film/622365-the-mandaloria...
4   https://www.csfd.cz/film/281929-borat-subseque...
5   https://www.csfd.cz/film/818525-delete-history...
6   https://www.csfd.cz/film/4952-kocar-do-vidne/p...
7   https://www.csfd.cz/film/823303-last-and-first...
8    https://www.csfd.cz/film/43582-posledni-samuraj/
9    https://www.csfd.cz/film/43582-posledni-samuraj/
10   https://www.csfd.cz/film/43582-posledni-samuraj/

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas selenium dictionary for-loop


    【解决方案1】:

    试试这个,

    from selenium import webdriver
    import pandas as pd
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    film_list =  pd.read_csv("film_list.csv", index_col=0)
    driver = webdriver.Chrome("D:\Documents\ADAM\Project\CSFD Bot\chromedriver.exe")
    driver.get("https://www.csfd.cz/zebricky/nejlepsi-filmy/?show=complete")
    elems = driver.find_elements_by_xpath("//a[contains(@href, 'film')]")
    
    for elem in elems:
        film_list_updated = film_list.append({"link": elem.get_attribute("href")}, ignore_index=True)
        film_list_updated.to_csv("film_list.csv", mode='a', header=False)
    
    driver.quit()
    
    

    【讨论】:

    • 谢谢。我在这里看到的唯一缺陷是附加链接的所有索引都是 0。但是,这与我的代码无关,只是出于好奇,有没有办法解决这个问题?
    • 哦,发现了另一件事。如果文件已经包含记录,则每次交互都会重新附加它们,从而产生数千条记录。但这对我来说很好:D
    • 你的 csv 文件的标题是什么?
    • 它们是:索引、链接
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2022-08-17
    • 2019-06-14
    • 2022-11-17
    • 2016-12-12
    • 2018-08-18
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多