[PYTHON] Vielleicht funktioniert es! Lass uns versuchen zu kratzen!

Einführung

Ich wollte kratzen, aber ich habe es nicht angefasst, aber ich bin endlich aufgestanden und habe es angefasst und zusammengefasst, was ich damals untersucht habe. Ich hoffe, es ist hilfreich für diejenigen, die mit dem Web-Scraping beginnen möchten.

Umgebung


$ python --version
Python 3.7.4
$ conda --version
conda 4.7.12
$ pip -V
pip 19.2.3 from ■■■■■■■■■■■■■■■■■■■ (python 3.7)

Installation

Dieses Mal werden wir Anakonda zum Schaben verwenden. Wenn Sie es brauchen, installieren Sie es bitte. anaconda Windows-Version Anaconda Mac-Version

Wenn Sie anaconda nicht installieren möchten, installieren Sie bitte die folgende Bibliothek von pip. (Es ist standardmäßig in Anaconda installiert.)


$ pip install requests
$ pip install beautifulsoup4
$ pip install lxml

Über die Bibliothek

Requests

Eine HTML-Kommunikationsbibliothek, mit der Sie auf einfache Weise HTML / XML-Informationen und Bilder von Websites abrufen können. Die HTTP-Kommunikationsbibliothek mit dem Namen urllib ist in der Standard-Python-Bibliothek installiert, die API kann jedoch nicht ordnungsgemäß verwendet werden ** (Offizielle Ansicht anfordern) **. ** ** **

Beautiful Soup 4

Eine HTML-Parser-Bibliothek, die bestimmten Text aus dem erfassten HTML / XML extrahiert.

lxml

HTML-Parser. Python hat html.parser als Standardbibliothek, aber lxml scheint einfacher zu verwenden zu sein.

Beginnen Sie mit Web Scraping

Dieses Mal werde ich als Beispiel vorstellen, wie man den Titel der Hauptnachrichten von Yahoo News erhält. Der Beispielcode wird am Ende des Artikels zusammengestellt.

Erstellen Sie eine 1-py-Datei und importieren Sie Anforderungen und BeautifulSoup4 mit der folgenden Beschreibung.


    import requests
    from bs4 import BeautifulSoup

2 Legen Sie die URL fest und rufen Sie den HTML-Code mit Anfragen ab.


    url = 'https://news.yahoo.co.jp/'
    rq = requests.get(url)

3 Erstellen Sie ein Objekt für die HTML-Analyse.


    bs = BeautifulSoup(rq.text, 'lxml')

4 Verwenden Sie die Entwicklertools von Chrome, um das gewünschte Teil zu finden.

Der Teil, der den Titeln der wichtigsten Nachrichten gemeinsam ist, ist von Li-Tags umgeben, und der Klassenname lautet "topicListItem".

Schneiden Sie den erforderlichen Teil aus HTML aus, basierend auf den Bedingungen in 5 4.


    newsList = bs.find_all("li", class_="topicsListItem")

In diesem Zustand wird jedes Li-Tag erfasst.

6 Ich möchte nur den Textteil aus der Schnittliste, also bekomme ich_text () und gebe ihn dann aus.


    for news in newsList:
      print(news.get_text())

Ergebnis

Leistungsbetrug Eine Reihe von Selbstkonsultationen
GoTo Inns, in denen Reservierungen für Einwohner Tokios nacheinander vorgenommen werden
US-Präsident Jemen zum Tode verurteilt
Gewalttätige Berichterstattung Tokio Zeitung entschuldigt sich
Wiederherstellung nach einem Ausfall des Docomo-Systems
Letzter Yuru Chara GP Tohoku Erster V.
Kurzstrecken GI Gran Alegria V.
Mikako Tabe Ich erwarte niemanden

Du hast es richtig verstanden!

Beispielcode


import requests
from bs4 import BeautifulSoup
    
url = 'https://news.yahoo.co.jp/'
rq = requests.get(url)
    
bs = BeautifulSoup(rq.text, 'lxml')
newsList = bs.find_all("li", class_="topicsListItem")
    
for news in newsList:
  print(news.get_text())

Recommended Posts

Vielleicht funktioniert es! Lass uns versuchen zu kratzen!
Versuchen Sie es mit Python.
Versuchen wir es mit einem Shell-Skript
Es könnte rekursiv sein