如何在Python中加速Beautifulsoup?
我试图用Python中的Beautifulsoup解析50000个url。 解析在循环中工作: 我计算出解析一个页面的时间是15-18秒。从页面中我抓取了大约20个元素如何在Python中加速Beautifulsoup?,python,python-2.7,beautifulsoup,Python,Python 2.7,Beautifulsoup,我试图用Python中的Beautifulsoup解析50000个url。 解析在循环中工作: 我计算出解析一个页面的时间是15-18秒。从页面中我抓取了大约20个元素 为什么Beautifulsoup工作得这么慢?如何在Python中加速Beautifulsoup?并行处理 e、 g 确保您了解您的瓶颈 第一个也是主要的问题不是HTML解析,而是“解析在循环中工作” 这意味着代码是同步/阻塞的——在处理完当前URL之前,您不会处理下一个URL。这绝对是不可伸缩的 要解决这个问题,请切换到异步方
为什么Beautifulsoup工作得这么慢?如何在Python中加速Beautifulsoup?并行处理 e、 g
确保您了解您的瓶颈 第一个也是主要的问题不是HTML解析,而是“解析在循环中工作” 这意味着代码是同步/阻塞的——在处理完当前URL之前,您不会处理下一个URL。这绝对是不可伸缩的 要解决这个问题,请切换到异步方法(例如,切换到web scraping framework),这是目前扩展web scraping项目最自然的方法 另见:
title=soup.select('.document title>.id app title')[0]。text
?我的意思是如何将此代码放到Q
:`soup=BeautifulSoup(content,'html.parser')web_site=“”.title=soup.select('.document title>.id app title')[0]。text`坦白地说,这是一个不同的问题,并不是说我不想回答这个问题。在Python3中,我得到一个错误:NameError:name'Thread'未定义
您能执行以下回复吗?>>导入线程>>>def p:。。。打印s…>>>t=threading.Thread(target=p,args=([“Hello”])>>>t.run>>t.run()Hello>>
import Queue
import threading
# will execute parrallel
def taskProcess(q, url):
q.put(beautifulSoupFunction(url))
urls = ["http://url1.com", "http://url2.com"]
q = Queue.Queue()
for u in urls:
t = threading.Thread(target=taskProcess, args = (q,u))
t.daemon = True
t.start()
s = q.get()
print s