• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python web scrapping [problem poczatkujacego]

0 głosów
90 wizyt
pytanie zadane 30 listopada 2018 w Python, Django przez Ferdu Gaduła (4,120 p.)

Hej wszystkim pisałem swój pierwszy "poważniejszy" program w pythonie 3.7 i natrafiłem na problem.

Chciałbym aby program pobierał ze strony zawartość znajdującą się w <p class="name">... </p> i wyświetlał ją bez zbędnych tagów (chyba tak to się nazywa)

Co mam do tej pory:

from bs4 import BeautifulSoup
import requests

page = requests.get("http://losownik.pl/imie/losuj/name-surname")
soup = BeautifulSoup(page.content, 'html.parser')
soup = soup.find_all(class_="name")

print (soup)

Co otrzymuje:

"C:\Program Files (x86)\Python37-32\python.exe" "C:/PycharmProjects/Generator imion/generator imion.py"
[<p class="name">
				Gabriela Król			</p>]

Process finished with exit code 0

chciałbym pozbyć się [<p class="name"> oraz </p>] Czuje że to coś bardzo prostego ale nie potrafię sobie z tym poradzić.

Następnie chciałbym dodać funkcję zapisywania zebranych imion i nazwisk do tabelki w exelu dodając do tego generowanie wieku z podanego przedziału wiekowego, a na samym końcu chciałbym stworzyć swoje gui które umożliwi wpisanie ile imion i nazwisk chciałbym wygenerować, jakiej płci oraz wskazać ścieżkę gdzie ma być zapisany plik ale wszystko w swoim czasie

 

Pozdrawiam i miłego dnia :D

1 odpowiedź

0 głosów
odpowiedź 30 listopada 2018 przez niezalogowany
r = soup.find_all("p", class_="name")
for item in r:
  print r.text

Możesz się do tego dobrać poprzez .text

komentarz 30 listopada 2018 przez Ferdu Gaduła (4,120 p.)

coś chyba robię nie tak :/

Kod:

from bs4 import BeautifulSoup
import requests

page = requests.get("http://losownik.pl/imie/losuj/name-surname")
soup = BeautifulSoup(page.content, 'html.parser')

r = soup.find_all("p", class_="name")
for item in r:
  print (r.text)

Output:

"C:\Program Files (x86)\Python37-32\python.exe" "C:/PycharmProjects/Generator imion/generator imion.py"

Traceback (most recent call last):
  File "C:/PycharmProjects/Generator imion/generator imion.py", line 17, in <module>
    print (r.text)
  File "C:\Program Files (x86)\Python37-32\lib\site-packages\bs4\element.py", line 1884, in __getattr__
    "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
AttributeError: ResultSet object has no attribute 'text'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?

Process finished with exit code 1
komentarz 1 grudnia 2018 przez niezalogowany

Powinno być page.text, a nie page.content oraz item.text, a nie r.text ;) (ja zrobiłem błąd, sorry)

Podobne pytania

0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 11 kwietnia 2017 w PHP, Symfony, Zend przez Paweł Łozowski Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 296 wizyt
+7 głosów
1 odpowiedź 810 wizyt
pytanie zadane 3 lutego 2018 w Nasze poradniki przez niezalogowany
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

67,127 zapytań

114,075 odpowiedzi

241,784 komentarzy

47,030 pasjonatów

Przeglądających: 218
Pasjonatów: 16 Gości: 202

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...