首页 > 解决方案 > 如何从登录是弹出框的页面中抓取数据

问题描述

我想从我拥有登录凭据的网页( urbanation.ca )上刮取数据。我的登录允许我以 Excel 表格的形式下载数据,但这需要很长时间。这就是为什么我想从中刮取数据。

现在,我确实看到了很多帖子,其中告诉您当网站要求您登录时如何抓取它。但是,就我而言,登录是网页上的一个按钮,单击该按钮会打开一个弹出窗口,要求输入登录凭据。我该如何处理?

import requests
import re
r = requests.get('https://www.urbanation.ca', proxies={'http':'50.207.31.221:80'}).text

payload = {'name': 'username', 'pass': 'password'}
POST_LOGIN_URL = 'https://www.urbanation.ca'
REQUEST_URL = 'https://www.urbanation.ca/urbanation/project/1/view'

with requests.Session() as session:
    post = session.post(POST_LOGIN_URL, data=payload)
    r = session.get(REQUEST_URL)
    print(r.text)   

我知道我没有正确的 post_login_url 变量条目,因为我不知道在哪里发布我的凭据。

标签: pythonauthenticationweb-scraping

解决方案


以下对我有用。正如 Stivan 在评论中所说,您真的应该考虑从帖子中删除您的登录信息。

import requests

data = {
    'name': 'EMAIL HERE',
    'pass': 'PASSWORD HERE',
    'form_id': 'user_login_block',
    'op': 'login <span class="teal m1_arrow  arrow-right"></span>',
}
url = 'https://www.urbanation.ca/fp2018?destination=fp2018'
r = requests.post(url, data=data)
print(r.text)

推荐阅读