python - 使用弹出登录窗口进行网页抓取
问题描述
我正在尝试从 url 中抓取信息,登录是一个弹出窗口,我使用了下面的代码,但它不起作用。
import requests
data = {
'username': 'email',
'hash': 'password',
'form_id': 'login_form',
'op': 'login <button class="btn btn-lg btn-blue" type="submit"></button>',
}
url = 'https://www.canstar.com.au/'
r = requests.post(url, data=data)
print(r.text)
print(r.text) 的结果如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /</pre>
</body>
</html>
当登录是这样的弹出窗口时,抓取信息的正确方法是什么?
解决方案
解决您的问题的最佳方法是使用Selenium
库关闭任何弹出窗口或使用用户名和密码登录。用这样的一行代码:
driver.find_element_by_xpath('Xpath address').click()
推荐阅读
- c++ - 如何创建将某个实体移动到某个位置的方向向量
- vue.js - 使用 vuelidate 时设置默认 v-model
- css - 复制和粘贴多行 CSS (Chrome DevTools)
- mysql - 雄辩模型laravel的条件
- java - MAX_VALUE+1 & MIN_VALUE-1 如何与java的所有数据类型一起工作?
- c# - .NET Core 应用程序中的 appsettings.json 与 appsettings.{Environment}.json
- html - 从网站中提取并将文本作为数组存储在 JS 中
- javascript - 如何使用反应钩子发布图像
- python - 在 Python 中搜索列表中的重复项
- java - 我的实体类中有一个 GregorianCalender,如何创建一个具有特定日期并在 toString() 中以特定格式显示的对象?