Python 从需要登录的页面中刮取数据

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

我不熟悉Python和Web Scraping,我正在尝试编写一个非常基本的脚本,该脚本将从只有登录后才能访问的网页中获取数据。我看过很多不同的例子,但没有一个能解决这个问题。这就是我到目前为止所做的:

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()
这意味着在运行脚本时,将首先执行在该块中找到的任何内容。如果我的答案对您有帮助,请随时将其标记为答案。:)让我们。