2017-02-22 5 views
1

Ich mag würde Daten in einem Kalender bekommen:Extrahieren von Daten aus einem Kalender mit Python und BeautifulSoup

http://www.purebhakti.com/component/panjika

Ich dachte über Python und beautifulsoap aber ich Vorschläge akzeptieren.

Ich möchte das Ereignis des Tages nehmen:

22. April 2017: Ekadasi, K, 6.09, Śatabhiṣā

+ suddha Ekadasi VRATA: gefastet Varūthinī Ekadasi

Wie Damit das Programm den Kalender erreicht (nachdem die Zeitzonen- und Stadtauswahl automatisch vorgenommen wurde)? Zum Beispiel: Zeitzone = -3: 00 Buenos Aires Stadt = Rio de Janeiro

from bs4 import BeautifulSoup 
import requests 

url = 'http://www.purebhakti.com/component/panjika' 
header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 
         'AppleWebKit/537.36 (KHTML, like Gecko) ' 
         'Chrome/51.0.2704.103 Safari/537.36'} 



req = requests.get(url,headers= header) 

html = req.text 

soup = BeautifulSoup(html,'html.parser') 
+0

Haben Sie etwas versuchen? Was ist deine Anstrengung bisher? –

+0

Ich weiß nicht, welche Elemente ich auf der Webseite auswählen soll! –

Antwort

2
import requests, bs4 
from urllib.parse import parse_qsl 

qs = 'action=2&timezone=23&location=Rio+de+Janeiro%2C+Brazil++++++++043W15+22S54+++++-3.00&button=Get+Calendar' 
payload = dict(parse_qsl(qs)) 
r = requests.post('http://www.purebhakti.com/component/panjika', data=payload) 

, wenn Sie auf die Schaltfläche klicken, werden Sie Daten auf Server veröffentlichen, Sie kann die Daten im Chrome-Entwicklungstool finden.

enter image description here

können wir dieses Verhalten über requests.post()

imitieren ich parse_qsl auch codierte URL zu Python dict zu konvertieren verwenden:

{'action': '2', 
'button': 'Get Calendar', 
'location': 'Rio de Janeiro, Brazil  043W15 22S54  -3.00', 
'timezone': '23'} 
+0

Danke. Ich habe versucht, den Code zu verstehen. Was ist "Datum"? Daten 'ist nicht definiert. Kannst du mir bitte helfen? –

+0

@Ed S Wenn Sie Post verwenden, senden Sie Daten an den Server, es ist ein Dict enthält die kv-Paare. Http://docs.python-requests.org/en/master/user/quickstart/#more-complicated- Post-Anfragen –

+0

Nutzlast = dict (parse_qsl (Daten)) NameError: Name 'Daten' ist nicht definiert –

3

Es gibt viele Möglichkeiten, um diese Frage zu lösen:

-Sie Selenium WebDriver auf eine Schaltfläche klicken können und wählen Sie Zeitzone und Stadt.

- Eine andere Option als Selen ist die Verwendung von pyautogui (Funktion "pyautogui.locateOnScreen").

-Um Download Kalender (Webseite Quelle) verwenden urllib2

-Um notwendigen Daten aus dem Kalender zu erhalten, verwenden Schöne Soap

+1

Er benutzt Python 3. In Python 3 gibt es kein Modul namens urllib2. –

+1

@KhairulBasarRofi Sie haben Recht. Es gibt: urllib.request-Modul. –

Verwandte Themen