Python 从需要登录的页面中刮取数据
我不熟悉Python和Web Scraping,我正在尝试编写一个非常基本的脚本,该脚本将从只有登录后才能访问的网页中获取数据。我看过很多不同的例子,但没有一个能解决这个问题。这就是我到目前为止所做的:Python 从需要登录的页面中刮取数据,python,authentication,web-scraping,cookies,beautifulsoup,Python,Authentication,Web Scraping,Cookies,Beautifulsoup,我不熟悉Python和Web Scraping,我正在尝试编写一个非常基本的脚本,该脚本将从只有登录后才能访问的网页中获取数据。我看过很多不同的例子,但没有一个能解决这个问题。这就是我到目前为止所做的: from bs4 import BeautifulSoup import urllib, urllib2, cookielib username = 'name' password = 'pass' cj = cookielib.CookieJar() opener = urllib2.bu
from bs4 import BeautifulSoup
import urllib, urllib2, cookielib
username = 'name'
password = 'pass'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'password' : password})
opener.open('WebpageWithLoginForm')
resp = opener.open('WebpageIWantToAccess')
soup = BeautifulSoup(resp, 'html.parser')
print soup.prettify()
现在,当我打印页面时,它只是打印页面的内容,就好像我没有登录一样。我认为这个问题与我设置cookie的方式有关,但我真的不确定,因为我不完全了解cookie处理器及其库发生了什么。
谢谢大家!
当前代码:
import requests
import sys
EMAIL = 'usr'
PASSWORD = 'pass'
URL = 'https://connect.lehigh.edu/app/login'
def main():
# Start a session so we can have persistant cookies
session = requests.session(config={'verbose': sys.stderr})
# This is the form data that the page sends when logging in
login_data = {
'username': EMAIL,
'password': PASSWORD,
'LOGIN': 'login',
}
# Authenticate
r = session.post(URL, data=login_data)
# Try accessing a page that requires you to be logged in
r = session.get('https://lewisweb.cc.lehigh.edu/PROD/bwskfshd.P_CrseSchdDetl')
if __name__ == '__main__':
main()
您可以使用
请求
模块
看看我在下面链接的这个答案
如果_uname\u=_umain\u_,我可以调用main()方法而不使用
行吗?到目前为止,脚本中还没有定义任何函数,更不用说主函数了。将类似的代码块分组到函数中是一种很好的做法。另外,如果
,你为什么不想使用,如果
?这行的确切意思是什么如果uuu name uuu=='uuuu main uuu':main()
这意味着在运行脚本时,将首先执行在该块中找到的任何内容。如果我的答案对您有帮助,请随时将其标记为答案。:)让我们。