Parsing Python Queue object(正在解析Python队列对象)
本文介绍了正在解析Python队列对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在想代码中的问题出在哪里
from queue import Queue
from threading import Thread
from html.parser import HTMLParser
import urllib.request
hosts = ["http://yahoo.com", "http://google.com", "http://ibm.com"]
queue = Queue()
class ThreadUrl(Thread):
def __init__(self, queue):
Thread.__init__(self)
self.queue = queue
def run(self):
while True:
host = self.queue.get()
url=urllib.request.urlopen(host)
url.read(4096)
self.queue.task_done()
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
def consumer():
for i in range(3):
t = ThreadUrl(queue)
t.setDaemon(True)
t.start()
for host in hosts:
parser = MyHTMLParser()
parser.feed(host)
queue.put(host)
queue.join()
consumer()
我的目标是提取URL的内容,读取队列并最终对其进行解析。当我执行代码时,它不会打印任何内容。我应该将解析器放在哪里?
推荐答案
示例:
from queue import Queue
from threading import Thread
from html.parser import HTMLParser
import urllib.request
NUMBER_OF_THREADS = 3
HOSTS = ["http://yahoo.com", "http://google.com", "http://ibm.com"]
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
class ThreadUrl(Thread):
def __init__(self, queue):
Thread.__init__(self)
self.queue = queue
def run(self):
while True:
host = self.queue.get()
url = urllib.request.urlopen(host)
content = str(url.read(4096))
parser = MyHTMLParser()
parser.feed( content )
self.queue.task_done()
def consumer():
queue = Queue()
for i in range(NUMBER_OF_THREADS):
thread = ThreadUrl(queue)
thread.setDaemon(True)
thread.start()
for host in HOSTS:
queue.put(host)
queue.join()
if __name__ == '__main__':
consumer()
这篇关于正在解析Python队列对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:正在解析Python队列对象


猜你喜欢
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01