Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中加速Beautifulsoup?_Python_Python 2.7_Beautifulsoup - Fatal编程技术网

如何在Python中加速Beautifulsoup?

如何在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。这绝对是不可伸缩的 要解决这个问题,请切换到异步方

我试图用Python中的Beautifulsoup解析50000个url。 解析在循环中工作:

我计算出解析一个页面的时间是15-18秒。从页面中我抓取了大约20个元素


为什么Beautifulsoup工作得这么慢?如何在Python中加速Beautifulsoup?

并行处理

e、 g


确保您了解您的瓶颈

第一个也是主要的问题不是HTML解析,而是“解析在循环中工作”

这意味着代码是同步/阻塞的——在处理完当前URL之前,您不会处理下一个URL。这绝对是不可伸缩的

要解决这个问题,请切换到异步方法(例如,切换到web scraping framework),这是目前扩展web scraping项目最自然的方法

另见:


使用lxml库或使用Beauty的lxml解析器,我只是把它放在线程中<代码>q.put(美化组函数(url))?或者下面的所有代码为:
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