بيثون حزمة للمتعدد الخيوط العنكبوت مع / دعم وكيل؟
-
06-07-2019 - |
سؤال
وبدلا من مجرد استخدام urllib لا أحد يعرف من حزمة الأكثر فعالية لسرعة، تحميل مؤشرات من عناوين المواقع التي يمكن أن تعمل من خلال وكلاء HTTP؟ وأنا أعلم من عدد قليل مثل ملتوية، Scrapy، يبكورل الخ ولكن أنا لا أعرف ما يكفي عنهم لاتخاذ قرار أو حتى ما إذا كان يمكن استخدام وكلاء .. أحد يعرف من أفضل واحد لأغراض بلدي؟ شكرا!
المحلول
وغير وبسيطة لتنفيذ هذا في بيثون.
<اقتباس فقرة>ووurlopen () أعمال وظيفة بشفافية مع وكلاء التي لا لا تتطلب مصادقة. في يونكس أو بيئة ويندوز، تعيين http_proxy، ftp_proxy أو gopher_proxy متغيرات البيئة إلى أن URL يحدد الملقم الوكيل قبل بدء مترجم Python
اقتباس فقرة># -*- 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()
نصائح أخرى
وعادة الوكلاء المواقع تصفية استنادا قاطع على كيفية تم إنشاء الموقع. فمن الصعب نقل البيانات من خلال وكلاء استنادا إلى فئات. وتصنف مثل يوتيوب كما تيارات السمعية / البصرية وبالتالي يتم حظر يوتيوب في بعض الأماكن اسبيكالي المدارس. إذا كنت ترغب في تجاوز البروكسي والحصول على البيانات من موقع على شبكة الانترنت ووضعها في موقع حقيقي الخاصة مثل موقع دوت كوم التي يمكن تسجيلها لك. عندما كنت صنع وتسجيل الموقع تصنيف موقع الويب الخاص بك كما أي شيء تريده.