在 python 中创建与订阅站点的连接
Creating a connection to a subscription site in python
我正在寻找与 python 到 http://www.horseandcountry.tv 的连接,它通过 POST 方法获取我的登录参数。我想打开一个到这个网站的连接,以便抓取该网站的所有视频链接(这个,我也不知道该怎么做,但正在使用该项目来学习)。
我的问题是如何将我的凭据传递到网站的各个页面?例如,如果我只想使用 python 代码打开浏览器 window 指向 http://play.horseandcountry.tv/live/ 并在我已经登录的情况下打开它,我该怎么做?
据我所知,您有两种选择,具体取决于您想要抓取的方式和需要抓取的内容:
1) 使用urllib。您可以使用必要的登录凭据执行 POST 请求。这是低级别的解决方案,这意味着它很快,但不能处理像 javascript 代码这样的高级内容。
2) 使用selenium。您可以通过 python 代码模拟浏览器(Chrome、Firefox 等)和 运行 操作。然后它要慢得多,但也适用于 "sophisticated" 个网站。
我通常做的:我尝试第一个选项,如果在网站上遇到 javascript 安全层之类的问题,则选择选项 2。此外,selenium 可以从你的桌面,让你看到你的报废。
无论如何,只需谷歌 "urllib/selenium login to website",您就会找到您需要的。
您也可以使用 requests 模块。它是最受欢迎的之一。这里有一些与您想做什么有关的问题。
Log in to website using Python Requests module
如果你想避免使用 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, or requests documentation
我正在寻找与 python 到 http://www.horseandcountry.tv 的连接,它通过 POST 方法获取我的登录参数。我想打开一个到这个网站的连接,以便抓取该网站的所有视频链接(这个,我也不知道该怎么做,但正在使用该项目来学习)。
我的问题是如何将我的凭据传递到网站的各个页面?例如,如果我只想使用 python 代码打开浏览器 window 指向 http://play.horseandcountry.tv/live/ 并在我已经登录的情况下打开它,我该怎么做?
据我所知,您有两种选择,具体取决于您想要抓取的方式和需要抓取的内容:
1) 使用urllib。您可以使用必要的登录凭据执行 POST 请求。这是低级别的解决方案,这意味着它很快,但不能处理像 javascript 代码这样的高级内容。
2) 使用selenium。您可以通过 python 代码模拟浏览器(Chrome、Firefox 等)和 运行 操作。然后它要慢得多,但也适用于 "sophisticated" 个网站。
我通常做的:我尝试第一个选项,如果在网站上遇到 javascript 安全层之类的问题,则选择选项 2。此外,selenium 可以从你的桌面,让你看到你的报废。
无论如何,只需谷歌 "urllib/selenium login to website",您就会找到您需要的。
您也可以使用 requests 模块。它是最受欢迎的之一。这里有一些与您想做什么有关的问题。
Log in to website using Python Requests module
如果你想避免使用 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, or requests documentation