我试图用下面的代码刮网站使用JavaScript和Python
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>
所以基本上我正在寻找一种方式来触发JavaScript代码之上python为了刮去结果页面。
[Python和执行JavaScript刮]的可能的复制(http://stackoverflow.com/questions/41294205/scraping-with-python-and -executing-javascript) –