我正在尝试使用以下代码抓取网站
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代码,以便刮掉结果页面。
答案 0 :(得分:0)
如果没有比这个单一链接更多的上下文,就不可能回答这个问题。
但是,在javaScript驱动的内容生成的情况下,您要检查的第一件事是您的网页在单击该链接时发出的请求。
要执行此操作,请查看浏览器控制台中的网络面板。记录正在进行的请求,特别注意XHR请求。然后,你可以尝试复制这个,例如与请求库。
content = requests.get(&#39; xhr-url&#39;)