Scrape使用python与python的网站

时间:2016-12-23 04:36:54

标签: python web-scraping

我正在尝试使用以下代码抓取网站

import re
import requests

def get_csrf(page):
    matchme = r'name="csrfToken" value="(.*)" /'
    csrf = re.search(matchme, str(page))
    csrf = csrf.group(1)
    return csrf

def login():
    login_url = 'https://www.edline.net/InterstitialLogin.page'

    with requests.Session() as s:
        login_page = s.get(login_url)
        csrf = get_csrf(login_page.text)

        username = 'USER'
        password = 'PASS'

        login = {'screenName': username,
                 'kclq': password,
                 'csrfToken': csrf,
                 'TCNK':'authenticationEntryComponent',
                 'submitEvent':'1',
                 'enterClicked':'true',
                 'ajaxSupported':'yes'}
        page = s.post(login_url, data=login)
        r = s.get("https://www.edline.net/UserDocList.page?")
        print(r.text)

login()

我在哪里登录https://www.edline.net/InterstitialLogin.page,这是成功的,但我遇到的问题是当我尝试做的时候

r = s.get("https://www.edline.net/UserDocList.page?")
print(r.text)

它不会打印预期的页面,而是会抛出错误。经过进一步测试后,我发现即使您尝试从浏览器直接访问该页面,也会抛出此错误。因此,当我调查页面源代码时,我发现用于链接到我正在尝试抓取的页面的按钮使用以下代码

<a href="javascript:submitEvent('viewUserDocList', 'TCNK=headerComponent')" tabindex="-1">Private Reports</a>

所以基本上我正在寻找一种方法来在python中触发上面的javascript代码,以便刮掉结果页面。

1 个答案:

答案 0 :(得分:0)

如果没有比这个单一链接更多的上下文,就不可能回答这个问题。

但是,在javaScript驱动的内容生成的情况下,您要检查的第一件事是您的网页在单击该链接时发出的请求。

要执行此操作,请查看浏览器控制台中的网络面板。记录正在进行的请求,特别注意XHR请求。然后,你可以尝试复制这个,例如与请求库。

content = requests.get(&#39; xhr-url&#39;)