首页 > 解决方案 > Python使用多线程组合熊猫数据框

问题描述

我已经看到有关多线程用于拆分数据帧和读取数据的信息,但我似乎无法找到有关多线程用于在数据帧中组装数据的信息。

我提供了一个基本代码,它将使用线程来抓取这个网站。代码的目标是循环浏览 Pokémon 页面,并将每个 Pokémon 的名称和价格添加到该页面的数据框中。然后我会获取该页面的数据框并将其添加到一个大数据框中。我已经能够在不使用多线程的情况下让它工作,但从来没有。重申一下,我想在了解顺序的同时将所有数据框添加到一个大框架中!(我知道线程喜欢相互竞争)

PS:当前代码只是输出单个数据帧而没有意识到顺序。

from selenium import webdriver
import pandas as pd
import threading

df = pd.DataFrame(columns=['Name','Price'])

def parse_url(driver,df):
    count=1
    while True:
        try:
            product = (driver.find_element_by_xpath("//*[@id='main']/ul/li["+str(count)+"]").text).split("\n")
            name = product[0]
            price = product[1]
            df.loc[count-1] = [name,price]
            count=count+1
        except:
            break



def open_url(n,df):
    driver = webdriver.Chrome()
    while True:
        try:
            driver.get("https://scrapeme.live/shop/page/"+str(n)+"/")
            parse_url(driver,df)
            n=n+2
        except:
            break


if __name__ == '__main__':
    n=1
    t1 = threading.Thread(target=open_url, args=(n,df,))
    n=2
    t2 = threading.Thread(target=open_url, args=(n,df,))
    t1.start()
    t2.start()

标签: pythonpandasmultithreadingseleniumweb-scraping

解决方案


推荐阅读