• 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
371 wizyt
pytanie zadane 30 listopada 2018 w Python przez Ferdu Gaduła (4,150 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,150 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
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 389 wizyt
pytanie zadane 11 kwietnia 2017 w PHP przez Paweł Łozowski Nowicjusz (180 p.)
0 głosów
1 odpowiedź 884 wizyt
pytanie zadane 19 sierpnia 2022 w Python przez NewbieProgrammer Początkujący (480 p.)
+1 głos
1 odpowiedź 1,037 wizyt

93,766 zapytań

142,723 odpowiedzi

323,374 komentarzy

63,360 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...