#python #beautifulsoup
#python #beautifulsoup
Вопрос:
У меня есть функция, которая предназначена для вывода очищенных элементов с веб-сайта. Однако, когда я пытаюсь использовать функцию позже в моем скрипте, вывод оказывается пустым. Соответствующий пример кода ниже:
def main(self):
links = [a, b, c]
self.soup_items = get_soup_items(links)
def get_soup_items(self, links):
item_list = []
for link in links:
browser = webdriver.Chrome("path_to_chromedriver", chrome_options=chrome_options)
browser.get(link)
time.sleep(3)
page_req = browser.page_source
soup = BeautifulSoup(page_req, "html.parser")
soupitems = soup.findAll("div", {"class": "content"})
item_list.apppend(soupitems)
return item_list
def get_objects(self):
for item in self.soup_items:
item_1 = item.find("span", {"class": "a"})
print(item_1)
Желаемый результат заключается в том, чтобы get_soup_items возвращал soupitems. Однако в функции get objects, когда я пытаюсь выполнить итерацию по выводу get_soup_items, я получаю пустой результат.
Комментарии:
1. Обратитесь за помощью к этому прекрасному блогу debug . Вы не продемонстрировали, что вам действительно есть что добавить к этому списку.
Ответ №1:
for link in links:
browser = webdriver.Chrome("path_to_chromedriver", chrome_options=chrome_options)
browser.get(link)
time.sleep(3)
page_req = browser.page_source
soup = BeautifulSoup(page_req, "html.parser")
soupitems = soup.findAll("div", {"class": "content"})
item_list = item_list soupitems
Ваш код никогда ничего не добавляет к item_list, так что либо вы не попадаете в цикл for, либо soupitems — это none.
Из-за этого
for item in self.soup_items:
item_1 = item.find("span", {"class": "a"})
print(item_1)
ваш цикл for each выполняться не будет, потому что в self.soup_items нет элементов.