2017-02-22 65 views
1

日历中提取数据,我想在一个日历得到的数据:从Python和Beautifulsoup

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

我想过使用Python和beautifulsoap,但我接受建议。

我想借今天的事件:

2017年4月22日:Ekādaśī,K,06:09,Śatabhiṣā

+ŚUDDHAEKĀDAŚĪVRATA:空腹VarūthinīEKADASI

如何使节目到达日历(自动完成时区和城市选择之后)?例如: 时区= -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) 

当您单击该按钮,您发布的数据服务器,可以在chrome开发工具中找到数据。

enter image description here

我们可以模仿通过requests.post()

这种行为我也用parse_qsl到编码的URL转换到Python字典:

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

谢谢。我试图理解代码。什么是“日期”?数据'未定义。请问你能帮帮我吗? –

+0

@Ed S当你使用post时,你正在向服务器发送数据,它是一个包含kv对的字典.http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-请求后 –

+0

payload = dict(parse_qsl(data)) NameError:name'data'is not defined –

3

有许多办法来解决这个问题:

- 您可以使用硒的webdriver点击一个按钮并选择时区和城市。

-Selenium的另一个选择是使用pyautogui(“pyautogui.locateOnScreen”函数)。

- 要下载日历(网页源)使用的urllib2

- 要获得从日历必要的数据,用漂亮的肥皂

+1

他正在使用python 3.在python 3中没有名为urllib2的模块。 –

+1

@KhairulBasarRofi你说得对。有:urllib.request模块。 –