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éhofind_all(blahblahblah)
? Uvedomujem si, žestory-heading
je vlastná trieda, ale nemôžem len hľadať všetky HTML pomocoufind_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 "tfind_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ď č. 1Krá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")