手机
当前位置:查字典教程网 >脚本专栏 >python >python使用rabbitmq实现网络爬虫示例
python使用rabbitmq实现网络爬虫示例
摘要:编写tasks.py复制代码代码如下:fromceleryimportCeleryfromtornado.httpclientimportH...

编写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()

self.queue.join()

def _worker(self):

while 1:

url=self.queue.get()

if url in self.visited:

continue

else:

result=get_html.delay(url)

try:

html=result.get(timeout=5)

except Exception as e:

print(url)

print(e)

self.process_html(html)

self._add_links_to_queue(url,html)

self.visited[url]=True

self.queue.task_done()

s=spider()

s.start("http://www.jb51.net/")

由于html中某些特殊情况的存在,程序还有待完善。

【python使用rabbitmq实现网络爬虫示例】相关文章:

python使用新浪微博api上传图片到微博示例

python实现爬虫下载漫画示例

python单链表实现代码实例

python装饰器使用方法实例

python根据经纬度计算距离示例

python实现代码行数统计示例分享

python使用scrapy解析js示例

使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤

Python的print用法示例

python构造icmp echo请求和实现网络探测器功能代码分享

精品推荐
分类导航