Heres कुछ async कोड प्रदान करने के लिए एक कतार के लिए अमेज़न खोज के साथ सेलेनियम, क्यों कर रहा हूँ मैं हो रही AttributeError? के __init__ नहीं चल रहा है?

0

सवाल

यहाँ कोड है मैं कर रहा हूँ का उपयोग कर खोज करने के लिए अमेज़न से मेरा तूफान वेब अनुप्रयोग है । फिलहाल मैं केवल एक इन वर्गों के (और एक webdriver) चालू. मैं कर सकता चाहते हैं की एक पूल भविष्य में उन्हें (हाँ, मैं जानता हूँ कि वहाँ है selenum ग्रिड, लेकिन नहीं है कि मेरे सवाल है.) मेरा सवाल है, क्यों है __init__ जाहिरा तौर पर नहीं चल रहा है? क्यों वहाँ एक attributeError तक पहुँचने के लिए स्व.कतार वार है जो स्पष्ट रूप से परिभाषित में __init__?

import asyncio
import uuid
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
from selenium.common.exceptions import NoSuchElementException


class Searcher:
    def __init___(self):
        self.driver = webdriver.Firefox(executable_path="/home/felix/project/geckodriver")
        self.wait = WebDriverWait(self.driver, 10)
        self.driver.get("https://amazon.com/")
        self.queue = []

    async def _search(self, query):
        self.driver.find_element(By.ID, "twotabsearchtextbox").send_keys("pixel" + Keys.RETURN)
        self.wait.until(presence_of_element_located((By.XPATH,
                "//div[contains(@class, 'sg-col-inner')]/div[contains(@class, 'a-section')]"
                "/div[contains(@class, 'a-section')]")))
        el = self.driver.find_elements(By.XPATH,
                "//div[contains(@class, 'a-section')]/div[h2][not(contains(.,'Sponsored'))]"
                "[contains(@class, 'a-section')]/..")
        out=[]
        for e in range(len(el)):
            try:
                out+=[{"price": el[e].find_element(By.XPATH, ".//span[contains(@class, 'a-price-whole')]").text + "." +
                el[e].find_element(By.XPATH, ".//span[contains(@class, 'a-price-fraction')]").text,
                "title": el[e].find_element(By.XPATH, ".//h2").text}]
            except NoSuchElementException:
                pass
        return out

    def search(self, query):
        _id = uuid.uuid4()
        self.queue.append(_id)
        async def help(self):
            while 1:
                if _id == self.queue[0]:
                    return await self._search(query)
                await asyncio.sleep(0.5)
        res = help(self)
        self.queue.pop()
        return res

a = Searcher()
print(asyncio.run(a.search("test")))

यहाँ त्रुटि है:

Traceback (most recent call last):
  File "/home/felix/project/search.py", line 49, in <module>
    print(asyncio.run(a.search("test")))
  File "/home/felix/project/search.py", line 38, in search
    self.queue.append(_id)
AttributeError: 'Searcher' object has no attribute 'queue'
attributeerror class init python
2021-11-24 06:01:11
1

सबसे अच्छा जवाब

0

कैसे rediciulous... मैं नाम था __init__ समारोह __init___.

मैं फिक्स्ड अन्य कीड़े पुनर्स्थापन और यहाँ के काम के कोड

import asyncio
import uuid
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
from selenium.common.exceptions import NoSuchElementException


class Searcher:
    def __init__(self):
        self.driver = webdriver.Firefox(executable_path="/home/felix/amcoin/geckodriver")
        self.wait = WebDriverWait(self.driver, 10)
        self.driver.get("https://amazon.com/")
        self.queue = []

    async def _search(self, query):
        self.driver.find_element(By.ID, "twotabsearchtextbox").send_keys(query + Keys.RETURN)
        self.wait.until(presence_of_element_located((By.XPATH,
                "//div[contains(@class, 'sg-col-inner')]/div[contains(@class, 'a-section')]"
                "/div[contains(@class, 'a-section')]")))
        el = self.driver.find_elements(By.XPATH,
                "//div[contains(@class, 'a-section')]/div[h2][not(contains(.,'Sponsored'))]"
                "[contains(@class, 'a-section')]/..")
        out=[]
        for e in range(len(el)):
            try:
                out+=[{"price": el[e].find_element(By.XPATH, ".//span[contains(@class, 'a-price-whole')]").text + "." +
                el[e].find_element(By.XPATH, ".//span[contains(@class, 'a-price-fraction')]").text,
                "title": el[e].find_element(By.XPATH, ".//h2").text}]
            except NoSuchElementException:
                pass
        return out

    async def search(self, query):
        _id = uuid.uuid4()
        self.queue.append(_id)
        while 1:
            if _id == self.queue[0]:
                res = await self._search(query)
                self.queue.pop()
                return res
            await asyncio.sleep(0.5)

a = Searcher()
print(asyncio.run(a.search("test")))
2021-11-24 06:21:16

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में