python - 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()
解决方案
推荐阅读
- java - 使用带有身份验证标头的 AWS API 网关上传音频
- php - 管理员在 Laravel 中创建用户
- c++ - 我在这个程序中收到“退出,浮点异常”的错误,你能解释一下并给我新代码,为什么会这样?
- flutter - 使用 getX 颤振图像选择器
- tensorflow2.0 - graph_def.ParseFromString(f.read()) google.protobuf.message.DecodeError:解析消息时出错
- spring-security - 在同一个身份验证管理器中列出多个身份验证提供程序
- c# - 命名空间“System.Configuration”中不存在类型或命名空间名称“UserScopedSettingAttributeAttribute”
- laravel - 需要一个 .htacces 条件来删除 index.php
- python - Pygame 函数有两个括号
- azure - 使用 chrome-launcher npm 包时出现 ChromeNotInstalledError