웹 사이트의 다중 처리 스크래핑을하려고합니다. 여기서 정보를 얻고 자하는 모든 노드의 목록을 얻고 대신에 풀을 생성합니다. 데이터를 하나씩 병렬로 처리합니다. 내 코드는 다음과 같다 : 문서를 확인 오류다중 처리를 시도하는 동안 로컬 객체를 pickle 할 수 없음
내 파이썬 터미널의
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 multiprocessing
def ResPartido(node):
ft=node.find_element_by_css_selector('.status').text
if ft.strip()!='FT': return
hora=node.find_element_by_css_selector('.time').text
names=list()
for nam in node.find_elements_by_xpath(
'.//td[contains(@style,"text-align")]/a[contains(@id,"team")]'):
name=nam.text
if '(N)' in name:
name=name.split('(N)')[0]
names.append(name)
score=node.find_element_by_css_selector('.red')
return [hora,name,score.text]
if __name__ == "__main__":
browser=webdriver.Chrome()
SOME CODE
nodes=browser.find_elements_by_xpath(
'//tr[contains(@align,"center")]/following-sibling::tr[.//div[contains(@class,"toolimg")]]')
p = multiprocessing.Pool()
p.map(ResPartido,nodes) <---Here is the error
.......
>>AttributeError: Can't pickle local object '_createenviron.<locals>.encodekey'
이미지,이리스트는 pickable 개체 등 주요 일 이전에 선언 된 기능입니다 말한다 멀티 프로세싱을 사용할 때 내가 뭘 잘못하고 있는지 이해할 수 없습니다.
어,'_createenviron은 무엇입니까? .encodekey'? –
피클이 호출되는 곳을 알 수 없습니다. 그것이 어디 있는지 추적 할 수 있습니까? – Acccumulation
오류 그림을 추가했습니다. 그것은 내가 map 함수라고 부르는 라인에 있습니다. 변수 노드는 html 노드의 목록이며, 꽤 많이 있습니다. – puppet