2017-02-22 57 views
1

Я хотел бы получить данные в календаре:Извлечение данных из календаря с Python и BeautifulSoup

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

Я думал об использовании Python и beautifulsoap, но я принимаю предложения.

Я хотел бы принять событие дня:

22 апреля 2017: Экадаши, K, 6:09, Śatabhiṣā

+ Шуддха Экадаши Врата: постился Varūthinī экадаши

Как чтобы программа достигла календаря (после автоматического выбора часового пояса и города)? Например: Время зоны = -3: 00 Буэнос-Айрес город = Рио-де-Жанейро

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

ли вы попробовать что-нибудь? Каковы ваши усилия до сих пор? –

+0

Я не знаю, что найти элементы, которые я хочу выбрать на веб-странице! –

ответ

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) 

при нажатии на кнопку, вы отправляете данные на сервер, могут найти данные в инструменте разработки хрома.

enter image description here

мы можем имитировать такое поведение с помощью requests.post()

Я также использовать parse_qsl преобразовать закодированный URL в питона Dict:

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

Спасибо. Я попытался понять код. Что такое «дата»? данные 'не определены. Не могли бы вы мне помочь, пожалуйста? –

+0

@ Ed S, когда вы используете сообщение, вы отправляете данные на сервер, это файл содержит пары kv. Http: //docs.python-requests.org/en/master/user/quickstart/#more-complicated- post-requests –

+0

payload = dict (parse_qsl (data)) NameError: name 'data' не определен –

3

Существует много способов решить этот вопрос:

-Вы можете использовать Selenium WebDriver, чтобы нажать на кнопку и выберите часовой пояс и город.

-Другой вариант, кроме Selenium, должен использовать функцию pyautogui («pyautogui.locateOnScreen»).

-Чтобы скачать календарь (источник веб-страницы) используют urllib2

-Чтобы получить необходимые данные из календаря, используйте красивые мыло

+1

Он использует python 3. В python 3 нет модуля с именем urllib2. –

+1

@KhairulBasarRofi Вы правы. Существует модуль urllib.request. –