2016-06-23 6 views
-2

Ich versuche diesen Web-Scrapper zu erstellen, der den Haupttitel aus Nachrichtenartikeln extrahieren kann.Wie h2 und h3 Titel aus Nachrichtenartikeln extrahiert werden

# -*- coding: utf-8 -*- 
import requests 
from bs4 import BeautifulSoup 

url= input('enter the url \n') 

r = requests.get(url) 
content = r.content 
soup = BeautifulSoup(content, "html.parser") 
heading = soup.find_all('h1') 
print(heading) 
print(str.strip(heading[0].text)) 

Dies funktioniert nur für die Titel in h1 Tags, sondern Wurffehler für Titel in h2 oder h3 Tags. Wie kann ich diesen Code so ändern, dass er auch für h2 und h3 Tags funktioniert? Danke im Voraus!

Antwort

3

BeautifulSoup ziemlich flexibel ist, passieren nur in einem list of tag names Sie suchen möchten:

soup.find_all(['h1', 'h2', 'h3']) 

Sie können sogar tun:

import re 

soup.find_all(re.compile(r"^h\d$")) # would match "h" followed by a single digit 
+0

Vielen Dank für die Hilfe Alex, das war ich war in der Lage, h1 und h2 Tags zu extrahieren, aber wie kann ich den Haupttitel aus Artikeln wie [this] (http://android-developers.blogspot.in/2016/06/introducing-android-basics-nanodegree.html) extrahieren, wo die Haupttitel ist in h3 Tag und Datum in h2. –

+0

@AmitSingh Nun, Sie können das Datum nach dem Klassennamen suchen: 'soup.find (class _ =" date-header "). Get_text()', gilt auch für den Titel des Artikels: 'soup.find (class _ =" post -title "). get_text()'. – alecxe

Verwandte Themen