Scraping von TV-Programminformationen aus Yahoo! TV.G Guide Ich habe den Code dafür geschrieben. Es gibt zwei Punkte, die ich mir ausgedacht habe.
Dieses Mal habe ich versucht, die Startzeit, den Kanal und den Programmtitel wie unten gezeigt als CSV auszugeben.
Startzeit,Kanal,Programmtitel
21:54,5,Pressestation
22:30,1,Historische geheime Geschichte Historia "Hirozen Castle 400 Jahre Nordschloss"
22:50,2,Nekomentary Katzen und Schöpflöffel. "Shuichi Yoshida und Kin-chan Gin-chan"
23:00,4,news zero Neuankömmlinge "milde" Männer, die zu Hause warten(52)Gestorben ... auf ein Bett warten
23:00,6,NEWS23 Ayaka Ogawa ▽ Deckt das berühmte Lied von Moe Shiraishi Telework ab
23:00,7,WBS ▽ Super ist sehr voll ... 3 Wie man es verhindert?Was ist eine Einkaufsagentur? ▽ Iris beschließt, die Maskenproduktion zu steigern
23:00,8,TOKIO Kakeru [Yosuke Eguchi&Kenichi Takifuji gesteht sein unerwartetes Paarleben!Meisterwerk Drama auch veröffentlicht]
...
Das Verschrotten kann je nach Verwendungszweck als illegal angesehen werden. Weitere Informationen finden Sie jedes Mal unter Nutzungsbedingungen und robots.txt. Bitte verwenden Sie den in diesem Artikel enthaltenen Code nach eigenem Ermessen und auf eigenes Risiko.
macOS Catalina Version 10.15.4 und Python3.8 Oder Raspberry Pi 3 Model B + und Rasbian Stretch und Python3.5
Installieren Sie schöne Suppe, Selen mit Pip
pip install beautifulsoup4
pip install selenium
Wenn der Chrome-Browser nicht auf Ihrem PC installiert ist, installieren Sie ihn. https://www.google.com/intl/ja_jp/chrome/
Installieren Sie den Chromtreiber mit pip. Bitte installieren Sie die Version, die der Version des Chrome-Browsers entspricht.
pip install chromedriver-binary==<Chrome-Versionsnummer>
Referenz: [Für Selen] So installieren Sie den Chrome-Treiber mit pip (kein Durchgang erforderlich, Version kann angegeben werden) https://qiita.com/hanzawak/items/2ab4d2a333d6be6ac760
Installieren Sie den Chromtreiber. (Dieses Mal hat es unten funktioniert, aber ehrlich gesagt verstehe ich das nicht so gut. Es wird angenommen, dass es aufgrund einer anderen Version als der Browser möglicherweise nicht funktioniert, aber was soll ich in einem solchen Fall tun? Ist unbestätigt)
sudo apt-get install chromium-chromedriver
Referenz: Browser-Betrieb auf Raspberry Pi mit Selenium- und Chrome-Treiber https://www.miki-ie.com/raspberry-pi/raspberry-pi%E3%81%ABselenium%E3%81%A8chromedriver%E3%81%A7%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%93%8D%E4%BD%9C/
Wir haben bestätigt, dass es ab dem 21. April 2020 funktioniert. Bitte beachten Sie jedoch, dass es möglicherweise nicht funktioniert, wenn sich die Struktur der Seite in Zukunft ändert. Unten werden der Programmtitel, die Startzeit und die Kanalinformationen erfasst. Schreiben Sie insbesondere den Teil, der Informationen von HTML erhält, entsprechend dem Zweck neu.
from bs4 import BeautifulSoup
from selenium import webdriver
import platform
#Verzweigen Sie den Prozess je nach Betriebssystem, sodass auf Mac und Raspeye derselbe Code funktioniert
OS = platform.system()
if OS == 'Darwin': #Für Mac
import chromedriver_binary
elif OS == 'Linux': #Für Himbeerkuchen
pass
output_file_path = 'program.csv'
area = '23' #Welche Programmanleitung der Präfektur soll angezeigt werden? 23 ist Tokio.
date = '20200421' #Welches Jahr, Monat und Tag, um den Zeitplan anzuzeigen.
starttime = '20' #Wann wird der Programmführer angezeigt?
duration_hour = '6' #Wie viele Stunden Programmlisten sollen angezeigt werden?
url = 'https://tv.yahoo.co.jp/listings/?'
#Regionale Informationen hinzugefügt. Kann weggelassen werden (auskommentieren). Der Standardwert ist 23(Tokio)
url += ('a='+area+'&')
#Datumsinformationen hinzugefügt. Kann weggelassen werden (auskommentieren). Der Standardwert ist das aktuelle Datum
url += ('d='+date+'&')
#Zeitinformationen hinzugefügt. Kann weggelassen werden (auskommentieren). Der Standardwert, wenn er weggelassen wird, ist die aktuelle Zeit
url += ('st='+starttime+'&')
#Informationen zur Anzeige der Zielzeit hinzugefügt. Kann weggelassen werden (auskommentieren). Der Standardwert, wenn weggelassen, ist 6 (Einheit ist Zeit)
url += ('va='+duration_hour+'&')
#Holen Sie sich Webdriver. Wenn Sie hier einen Fehler bekommen, chromedriver-Bezweifle den Versionsunterschied von binär
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
#Laden Sie die Webseite, holen Sie sich das HTML und analysieren Sie es mit beautifulSoup
driver.get(url)
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html,'html.parser')
#Erfassung von Programmleitfadeninformationen
#Holen Sie sich die Kanalliste oben in den Programmführer
station_elems = soup.find_all('td', class_='station')
stations = [elem.text.split('ch')[0] for elem in station_elems]
#Erwerb von Elementen einschließlich Programmtitel
title_elems = soup.find_all('a', class_='title')
table = [['Startzeit','Kanal','Programmtitel']]
for elem in title_elems:
#Titel holen
title = elem.text
#Startzeit bekommen
starttime = elem.parent.find('span',class_='time').text
#Welche Spalte im Programmführer enthält die Informationen?
col = int(elem.get('data-ylk').split('pos:')[1])
#Kanalnummer aus Spaltennummer abrufen
channel = stations[col-1]
#Fügen Sie den Elementen Programmtitel, Kanal und Startzeit hinzu
table.append([starttime,channel,title])
#Speichern Sie im CSV-Format
with open(output_file_path,'w') as f:
f.write('\n'.join([','.join(v) for v in table]))
Wie man die Terminal-Scraping-TV-Listen ausgibt http://moxtsuan.hatenablog.com/entry/scrape-tvprogram
Recommended Posts