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
 
