【发布时间】:2017-08-28 15:32:37
【问题描述】:
我在试图使用 Selenium 来获取网站上特定搜索的结果数量时不知所措。基本上,我想让这个过程运行得更快。我的代码通过迭代搜索词然后通过报纸将收集的数据输出到 CSV 来工作。目前,这会在 3 年内生成 3 个搜索词 x 3 份报纸,在每个 CSV 大约 10 分钟内给我 9 个 CSV。
我想使用多处理来同时运行每个搜索和报纸组合,或者至少更快地运行。我尝试在此处遵循其他示例,但未能成功实现它们。以下是我目前的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
import pandas as pd
from multiprocessing import Pool
def websitesearch(search):
try:
start = list_of_inputs[0]
end = list_of_inputs[1]
newsabbv=list_of_inputs[2]
directory=list_of_inputs[3]
os.chdir(directory)
if search == broad:
specification = "broad"
relPapers = newsabbv
elif search == narrow:
specification = "narrow"
relPapers = newsabbv
elif search == general:
specification = "allarticles"
relPapers = newsabbv
else:
for newspapers in relPapers:
...rest of code here that gets the data and puts it in a list named all_Data...
browser.close()
df = pd.DataFrame(all_Data)
df.to_csv(filename, index=False)
except:
print('error with item')
if __name__ == '__main__':
...Initializing values and things like that go here. This helps with the setup for search...
#These are things that go into the function
start = ["January",2015]
end = ["August",2017]
directory = "STUFF GOES HERE"
newsabbv = all_news_abbv
search_list = [narrow, broad, general]
list_of_inputs = [start,end,newsabbv,directory]
pool = Pool(processes=4)
for search in search_list:
pool.map(websitesearch, search_list)
print(list_of_inputs)
如果我在 main() 函数中添加一个打印语句,它会打印,但实际上什么都没有发生。我将不胜感激。我省略了获取值并将其放入列表的代码,因为它很复杂,但我知道它有效。
提前感谢您的任何帮助!如果我可以提供更多信息,请告诉我。
艾萨克
编辑:我查看了更多在线帮助并意识到我误解了使用 pool.map(fn, list) 将列表映射到函数的目的。我已经更新了我的代码以反映我目前仍然无法正常工作的方法。我还将初始化值移到了主函数中。
【问题讨论】:
-
您意识到您的行为违反了他们的服务条款吗? proquest.com/about/terms-and-conditions.html。见 9.e。和 9.i。你可以联系他们,看看他们是否有 API 等,如果它不破坏他们的服务条款,那么可以让你更快地获得你想要的东西。
-
嗨,杰夫,我已经检查了有关该项目的权力,显然这不是问题。我还编辑了代码以使其更通用,因为我计划将其应用到其他地方。
-
首先,不工作并没有真正的帮助。解释出了什么问题。还发布完整的最小代码,如果可能的话,可以运行看看
标签: python selenium multiprocessing python-multiprocessing multiprocess