emm*_*ins 4 python web-scripting selenium-chromedriver
我目前使用以下脚本从网站登录时间。
browser = webdriver.Chrome('E:/Shared Folders/Users/runnerjp/chromedriver/chromedriver.exe')
browser.get("https://www.timeform.com/horse-racing/account/sign-in?returnUrl=%2Fhorse-racing%2F")
time.sleep(3)
username = browser.find_element_by_id("EmailAddress")
password = browser.find_element_by_id("Password")
username.send_keys("usr")
password.send_keys("pass")
login_attempt = browser.find_element_by_xpath("//input[@type='submit']")
time.sleep(3)
login_attempt.submit()
Run Code Online (Sandbox Code Playgroud)
它可以正常工作,但是我发现使用Chrome网络驱动程序会严重影响我的CPU。有没有我可以使用的替代代码,并不意味着我需要实际加载页面才能登录?
这里的所有答案都有其优点,但这取决于要抓取的网站的类型以及它对登录进行身份验证的方式。
如果网页是通过javascript / ajax请求等生成部分或全部内容的,那么使用硒是唯一的方法,因为这允许执行javascript。但是,为了使CPU使用率降至最低,您可以使用“无头”浏览器,例如phantomjs。phantomjs使用与chrome相同的html引擎和javascript引擎,因此您可以使用chrome测试您的代码,并在最后切换。
如果页面的内容为“静态”,则可以使用该requests模块。但是,在这种情况下,执行此操作的方法将取决于网页是否使用包含在http协议中的“基本”身份验证(大多数情况下不这样做):
import requests
requests.get('https://api.github.com/user', auth=('user', 'pass'))
Run Code Online (Sandbox Code Playgroud)
如CodeMonkey所建议
但是如果使用其他方法,则您必须分析登录表单以查看邮寄请求发送到的地址,并使用该地址建立请求,然后将用户名/密码放入字段中ID为的字段中形成。
| 归档时间: |
|
| 查看次数: |
2322 次 |
| 最近记录: |