سؤال

وبدلا من مجرد استخدام 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()

نصائح أخرى

وعادة الوكلاء المواقع تصفية استنادا قاطع على كيفية تم إنشاء الموقع. فمن الصعب نقل البيانات من خلال وكلاء استنادا إلى فئات. وتصنف مثل يوتيوب كما تيارات السمعية / البصرية وبالتالي يتم حظر يوتيوب في بعض الأماكن اسبيكالي المدارس. إذا كنت ترغب في تجاوز البروكسي والحصول على البيانات من موقع على شبكة الانترنت ووضعها في موقع حقيقي الخاصة مثل موقع دوت كوم التي يمكن تسجيلها لك. عندما كنت صنع وتسجيل الموقع تصنيف موقع الويب الخاص بك كما أي شيء تريده.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top