国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用rabbitmq實現網絡爬蟲示例

2020-02-23 05:12:04
字體:
來源:轉載
供稿:網友

編寫tasks.py
代碼如下:
from celery import Celery
from tornado.httpclient import HTTPClient
app = Celery('tasks')
app.config_from_object('celeryconfig')
@app.task
def get_html(url):
    http_client = HTTPClient()
    try:
        response = http_client.fetch(url,follow_redirects=True)
        return response.body
    except httpclient.HTTPError as e:
        return None
    http_client.close()

編寫celeryconfig.py
代碼如下:
CELERY_IMPORTS = ('tasks',)
BROKER_URL = 'amqp://guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'

編寫spider.py
代碼如下:
from tasks import get_html
from queue import Queue
from bs4 import BeautifulSoup
from urllib.parse import urlparse,urljoin
import threading
class spider(object):
    def __init__(self):
        self.visited={}
        self.queue=Queue()
    def process_html(self, html):
        pass
        #print(html)
    def _add_links_to_queue(self,url_base,html):
        soup = BeautifulSoup(html)
        links=soup.find_all('a')
        for link in links:
            try:
                url=link['href']
            except:
                pass
            else:
                url_com=urlparse(url)
                if not url_com.netloc:
                    self.queue.put(urljoin(url_base,url))
                else:
                    self.queue.put(url_com.geturl())
    def start(self,url):
        self.queue.put(url)
        for i in range(20):
            t = threading.Thread(target=self._worker)
            t.daemon = True
            t.start()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞昌市| 崇仁县| 彭山县| 彰化县| 保靖县| 武城县| 报价| 民乐县| 洛扎县| 文昌市| 兴城市| 广德县| 汾阳市| 汶川县| 大化| 应用必备| 甘南县| 罗定市| 同仁县| 手机| 勐海县| 开鲁县| 海原县| 青龙| 神木县| 石河子市| 昌平区| 涟源市| 七台河市| 尼木县| 固镇县| 札达县| 财经| 五常市| 隆昌县| 鲁甸县| 沙雅县| 隆安县| 海安县| 栖霞市| 宁化县|