/ / Škrabanie webových stránok s python3 & beautifulsoup 4 - python, webové stránky, beautifulsoup, screen-scraping

Škrabanie webových stránok s python3 & beautifulsoup 4 - python, webové stránky, beautifulsoup, screen-scraping

Začínam robiť pokrok na webovej škrabke, ale narazil som na dve ruky. Tu je kód ako prvý:

import requests
from bs4 import BeautifulSoup

r=requests.get("http://www.nytimes.com")
soup=BeautifulSoup(r.text)

headlines=soup.find_all(class_="story-heading")
for headline in headlines:
print (headline)

otázky

  • Prečo musíte používať? find_all(class_= blahblahblah) Namiesto spravodlivého find_all(blahblahblah)? Uvedomujem si, že story-heading je vlastná trieda, ale nemôžem len hľadať všetky HTML pomocou find_all a získať rovnaké výsledky? Poznámky pre BeautifulSoup show_all.a vrátia všetky tagy kotvy do dokumentu HTML, prečo vyhral "t find_all("story-heading") urobiť to isté?

    Je to preto, že ak sa to pokúsim a urobím to, bude to jednoduchonájsť všetky prípady "story-heading" v HTML a vrátiť to? Snažím sa dostať Python, aby vrátil všetko v tejto značke. To je môj najlepší odhad.

  • Prečo dostanem celý tento extra nevyžiadaný kód? Moja požiadavka na to, aby som našiel všetko, mi ukázal všetko v hlavičke príbehu? Dostávam oveľa viac textu než to, čo som sa práve snažil špecifikovať.

odpovede:

1 pre odpoveď č. 1

Krásna polievka vám umožňuje používať výbery CSS. Pozrite sa na doc pre "volič CSS"

Všetky prvky s triedou "príbeh-heading" nájdete takto:

soup.find_all(".story-heading")

Ak namiesto toho hľadáte ID, stačí

soup.find_all("#id-name")