在python中创建与订阅站点的连接

时间:2017-01-31 18:05:50

标签: python connection

我希望打开与python到http://www.horseandcountry.tv的连接,它通过POST方法获取我的登录参数。我想打开一个与本网站的连接,以便抓取所有视频链接的网站(这个,我也不知道该怎么做,但我正在使用该项目来学习)。

我的问题是如何将我的凭据传递到网站的各个页面?例如,如果我想要做的就是使用python代码打开一个指向http://play.horseandcountry.tv/live/的浏览器窗口,并在我已登录的情况下打开它,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

据我所知,根据您的抓取方式以及抓取内容,您有两种选择:

1)使用urllib。您可以使用必要的登录凭据执行POST请求。这是低级解决方案,这意味着这很快,但不能处理像javascript代码这样的高级内容。

2)使用selenium。您可以模拟浏览器(Chrome,Firefox,其他..),并通过您的python代码运行操作。然后它会慢得多,但对于太“复杂”的网站效果很好。

我通常做的事情:我尝试第一个选项,如果在网站上遇到类似javascript安全层的问题,那么请选择2.此外,selenium可以从您的桌面打开一个真正的网络浏览器并给你一个你的报废视觉。

在任何情况下,只需goolge“urllib / selenium登录网站”,您就会找到所需内容。

答案 1 :(得分:1)

如果您想避免使用Selenium(打开网络浏览器),您可以查询请求,它可以登录网站并在后台抓取您需要的任何内容。

以下是您如何使用请求登录该网站。

import requests
from bs4 import BeautifulSoup

#Login Form Data
payload = { 
    'account_email': 'your_email',
    'account_password': 'your_passowrd',
    'submit':   'Sign In'
}

with requests.Session() as s:
    #Login to the website.
    response = s.post('https://play.horseandcountry.tv/login/', data=payload)

    #Check if logged in successfully
    soup = BeautifulSoup(response.text, 'lxml')
    logged_in = soup.find('p', attrs={'class': 'navbar-text pull-right'})
    print s.cookies
    print response.status_code
    if logged_in.text.startswith('Logged in as'):
        print 'Logged In Successfully!'

如果您需要对此进行说明,可以查看此answer或请求documentation

答案 2 :(得分:0)

您也可以使用requests模块。它是最受欢迎的之一。以下是与您想要做的事情相关的一些问题。

Log in to website using Python Requests module

logging in to website using requests