而不是仅仅使用urllib的没有人知道最有效的软件包,可以通过HTTP代理操作的URL的快速,多线程下载的? 我知道一个如绞,Scrapy,的libcurl等几个,但我不知道有足够的了解他们做出的决定或者即使他们可以使用代理..任何人都知道最好的一个,我的目的吗? 谢谢!
Answer 1:
是的简单实现这蟒蛇。
该函数urlopen()与不要求身份验证的代理透明地工作。 在Unix或Windows环境中,设置启动Python解释器之前确定代理服务器的http_proxy,ftp_proxy这或gopher_proxy环境变量来一个网址
# -*- coding: utf-8 -*-
import sys
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
from Queue import Queue, Empty
from threading import Thread
visited = set()
queue = Queue()
def get_parser(host, root, charset):
def parse():
try:
while True:
url = queue.get_nowait()
try:
content = urlopen(url).read().decode(charset)
except UnicodeDecodeError:
continue
for link in BeautifulSoup(content).findAll('a'):
try:
href = link['href']
except KeyError:
continue
if not href.startswith('http://'):
href = 'http://%s%s' % (host, href)
if not href.startswith('http://%s%s' % (host, root)):
continue
if href not in visited:
visited.add(href)
queue.put(href)
print href
except Empty:
pass
return parse
if __name__ == '__main__':
host, root, charset = sys.argv[1:]
parser = get_parser(host, root, charset)
queue.put('http://%s%s' % (host, root))
workers = []
for i in range(5):
worker = Thread(target=parser)
worker.start()
workers.append(worker)
for worker in workers:
worker.join()
Answer 2:
通常代理断然基于该网站的创建过滤器的网站。 很难通过根据类别代理来发送数据。 例如,YouTube是归类为音频/视频流,因此屏蔽了YouTube在一些地方espically学校。 如果你想绕过代理,并获得数据从一个网站,并把它放在自己的网站上真正的喜欢,可它注册到你一个点com网站。 当你正在和注册网站归类你的网站为你想要的任何东西。
文章来源: Python Package For Multi-Threaded Spider w/ Proxy Support?