Python:Pathos和Selenium的酸洗问题

时间:2018-09-12 20:56:13

标签: python selenium selenium-chromedriver python-multiprocessing pathos

很抱歉,我的问题的答案很明显,因为我是多处理的完全新手。

我正在尝试编写一个带有悲哀的多进程网络抓取脚本。我之所以选择“悲痛”,是因为据我所知,与Python的传统多处理模块不同,它无可挑剔地处理问题,并且不需要将每个函数或类都放在顶级模块中。

通常,我要执行的操作的伪代码如下:

from functools import partial
from pathos.multiprocessing import ProcessPool as Pool
from selenium import webdriver


def get_urls(main_page):
    """Extracts URLs from a website's main page; returns list."""
    return urls


def extract_text(url, web_driver):
    """Gets selenium.webdriver instance and an URL as arguments;
       extracts text from this url; returns string"""
    return text


if __name__ == '__main__':

    MAINPAGE = "http://some/link/for/scraping"
    driver = webdriver.Chrome("path/to/chrome/binary")
    myLinks = get_urls(MAINPAGE)
    pool = Pool(nodes=4)
    part_text = partial(extract_text, web_driver=driver)
    results = pool.map(part_text, myLinks)

    print(results)

尽管如此,尽管我已经正确安装了莳萝并且导入了_multiprocessing,没有任何问题,但是在运行代码时,我始终会遇到以下错误:

Traceback (most recent call last):
   File "D:\Anaconda\lib\site-packages\dill\_dill.py", line 688, in _create_filehandle
   f = open(name, mode)
   OSError: [WinError 6] The handle is invalid

还有:

_pickle.UnpicklingError: [WinError 6] The handle is invalid

这可能是Windows特定的问题吗?不幸的是,尽管我个人更喜欢Linux,但是该脚本需要在Windows 10 64位计算机上运行。我在两台Windows 10计算机上都尝试了Python 3.6(Anaconda 64位)和Python 3.7 32位,并得到了相同的错误。

在此先感谢您的任何想法,帮助和建议。

0 个答案:

没有答案