python - 收集数据时如何解决登录问题?
问题描述
当您从网站接收数据时,如果您在登录后可以看到数据,您如何访问它?
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome('c://chromedriver.exe')
driver.get("http://www.gevolution.co.kr/rank/history.asp")
soup = BeautifulSoup(driver.page_source, 'html.parser')
blocks = soup.findAll('div', {'class': 'grp'})
bodys = []
for block in blocks:
body = block.text
body = str(body).strip()
bodys.append(body)
print(bodys)
结果 :[]
在我想收集的网站上收集数据的一些代码。顺便说一句,如果我自动打开Chrome,由于登录问题,它不会被收集。我想知道如何解决登录问题。
解决方案
解决方案 1
您可以找到 cookie,并使用该 cookie 启动 selenium 驱动程序。这不会永久解决问题,因为 cookie 会在一段时间后过期。
解决方案 2
您可以通过模拟登录行为来登录网站。element.click()
element.send_keys('value')
您可以使用 selenium 模拟通过 selenium 提供的许多其他魔术方法输入密码和用户名。
如果网站需要验证码才能登录,这将变得很困难。在这种情况下,您可以手动输入验证码,或者使用算法来识别它,或者使用解决方案 1。
推荐阅读
- python - 是否可以在日期不是数据框索引的 groupby() 之后应用seasonal_decompose()?
- python - Python - 将字符串转换为日期时间对象
- c - 如何让我的程序连续运行,同时返回子进程?
- json - HttpRequestData 将正文包装在 { "json" : "" }
- redux-saga - 如果使用 takeLatest,如何取消 Saga 中的任务?
- jquery - 如何从 jQuery.when() 获得一致的参数,无论是单个 Deferred 传递给它还是多个
- java - 使用 Java 将 JSONarray 转换为 ArrayList
- caching - Refresh Ahead Cache 如何决定存储哪些数据?
- android - Android AVD 中的几何着色器
- swift - Facebook Auth “已存在具有相同电子邮件地址但登录凭据不同的帐户。”