селена питон Beautifulsoup застрял на текущей странице

1

Я пытаюсь очистить общественную группу facebook с помощью beautifulsoup, я использую мобильный сайт для отсутствия javascript там. Таким образом, этот скрипт должен получить ссылку из ключевого слова "больше" и получить текст из тега p, но он просто получает текст из текущего тега страницы p. Может ли кто-нибудь указать мне на проблему? Я новичок в python и все в этом коде.

   from selenium import webdriver
   from selenium.webdriver.common.keys import Keys
   from selenium.common.exceptions import NoSuchElementException
   from bs4 import BeautifulSoup
   import requests
   browser = webdriver.Firefox()
   browser.get('https://mobile.facebook.com/groups/22012931789?refid=27')
   for elem in browser.find_elements_by_link_text('More'):
      page = requests.get(elem.get_attribute("href"))
      soup=BeautifulSoup(page.content,'html.parser')
      print(soup.find_all('p')[0].get_text()) 
Теги:
selenium-webdriver
beautifulsoup

1 ответ

0

Всегда полезно посмотреть, что делает ваш скрипт, быстрый способ сделать это - напечатать ваши результаты на определенных этапах на этом пути.

Например, используя ваш код:

for elem in browser.find_elements_by_link_text('More'):
    print("elem href attribute: {}".format(elem.get_attribute("href")))

Вы заметите, что первый пустой. Мы должны проверить это, прежде чем пытаться получить запросы на его получение:

for elem in browser.find_elements_by_link_text('More'):
    if elem.get_attribute("href"):
        print("Trying to get {}".format(elem.get_attribute("href")))
        page = requests.get(elem.get_attribute("href"))
        soup=BeautifulSoup(page.content,'html.parser')
        print(soup.find_all('p')[0].get_text())

Обратите внимание, что пустой elem.get_attribute("href") возвращает пустую строку Unicode, u'' - но питоны рассматривает пустую строку, чтобы быть ложным, поэтому, что if работает.

Что отлично работает на моей машине. Надеюсь, это поможет!

  • 0
    ах, код работал нормально ... тег p был неправильным, я просто перешел на нужный раздел данных, который хотел, но в любом случае спасибо, я новичок в python и все, что я узнаю, хорошо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню