Como acelerar a busca de páginas com urllib2 em python?
Eu tenho um script que busca várias páginas da web e analisa as informações.
(Um exemplo pode ser visto emhttp://bluedevilbooks.com/search/?DEPT=MATH&CLASS=103&SEC=01 )
Eu executei o cProfile e, como presumi, o urlopen leva muito tempo. Existe uma maneira de buscar as páginas mais rapidamente? Ou uma maneira de buscar várias páginas ao mesmo tempo? Farei o que for mais simples, pois sou novo em desenvolvimento de python e web.
Desde já, obrigado! :)
UPDATE: Eu tenho uma função chamadafetchURLs()
, que eu uso para criar uma matriz dos URLs necessários, algo comourls = fetchURLS()
.Os URLs são todos os arquivos XML das APIs da Amazon e do eBay (o que me confunde por que demora tanto tempo para carregar, talvez o meu host esteja lento?)
O que preciso fazer é carregar cada URL, ler cada página e enviar esses dados para outra parte do script que analisará e exibirá os dados.
Observe que não posso fazer a última parte até que TODAS as páginas sejam buscadas, é esse o meu problema.
Além disso, meu host me limita a 25 processos por vez, acredito, portanto, o que for mais fácil no servidor seria bom :)
Aqui está o tempo:
Sun Aug 15 20:51:22 2010 prof
211352 function calls (209292 primitive calls) in 22.254 CPU seconds
Ordered by: internal time
List reduced from 404 to 10 due to restriction <10>
ncalls tottime percall cumtime percall filename:lineno(function)
10 18.056 1.806 18.056 1.806 {_socket.getaddrinfo}
4991 2.730 0.001 2.730 0.001 {method 'recv' of '_socket.socket' objects}
10 0.490 0.049 0.490 0.049 {method 'connect' of '_socket.socket' objects}
2415 0.079 0.000 0.079 0.000 {method 'translate' of 'unicode' objects}
12 0.061 0.005 0.745 0.062 /usr/local/lib/python2.6/HTMLParser.py:132(goahead)
3428 0.060 0.000 0.202 0.000 /usr/local/lib/python2.6/site-packages/BeautifulSoup.py:1306(endData)
1698 0.055 0.000 0.068 0.000 /usr/local/lib/python2.6/site-packages/BeautifulSoup.py:1351(_smartPop)
4125 0.053 0.000 0.056 0.000 /usr/local/lib/python2.6/site-packages/BeautifulSoup.py:118(setup)
1698 0.042 0.000 0.358 0.000 /usr/local/lib/python2.6/HTMLParser.py:224(parse_starttag)
1698 0.042 0.000 0.275 0.000 /usr/local/lib/python2.6/site-packages/BeautifulSoup.py:1397(unknown_starttag)