多处理导入池的问题,使用Selenium进行webscraping

时间:2018-02-17 14:53:34

标签: python web-scraping threadpool python-multiprocessing

我在使用Multiprocessing库的Pool类时遇到问题。

我有以下代码将列表作为输入,然后将其写入汤对象,然后将其放入列表并返回

def extract_BS(urls):

        BS_LIST = []


        for url in urls:
            try:

                browser = webdriver.Firefox()
                browser.get(url)                   
                print('Processing..' + url)

                respData = browser.page_source
                soup = bs.BeautifulSoup(respData, 'html.parser')
                BS_LIST.append(soup)
                browser.quit()

            except Exception as e:
                print(url)
                print('Exception:',e)
                pass

        return BS_LIST

我使用了10个网址的列表,并且它有效。现在,我想使用多线程来提高抓取速度。我使用以下代码,其中urls = 10个URL的列表

with Pool(10) as p:
    records = p.map(extract_BS, urls)

p.terminate()
p.join()

我收到一个错误,其实质上表明它正在使用网址中每个网址的第一个字母。

​
h
Exception: Message: Malformed URL: h is not a valid URL.

由于某种原因,它需要我列表中第一个元素的第一个字母,而不是实际的第一个条目。有什么帮助吗?

0 个答案:

没有答案