时间:2023-05-20 07:52:01 | 来源:网站运营
时间:2023-05-20 07:52:01 来源:网站运营
猴子都能学会的20行代码登录微博:如何登录新浪微博是令许多数据新手(包括我)头疼的大问题。由于新浪的反爬虫策略,网上的教程往往撑不过几个月,查阅到的资料在半年前或是一年前——而它们早就无法使用了,在你想开始爬虫的时候被活生生卡在了第一步。pip3 install selenium # 如果你使用 Python 2 ,请使用 pip install selenium
仅仅安装 Selenium 本身是不够的,你同时还需要安装 Driver 。你可以将 Driver 理解为浏览器本身的『驱动』,在程序中使用 Driver 就相当于你打开了一个浏览器做了些什么事情。from selenium import webdriverdriver = webdriver.Firefox() # 如果 Firefox 所时使用的 geckodriver 在环境中# driver = webdriver.PhantomJS() # 如果你想使用 PhantomJS
如果你需要自定义路径,你可以通过传入参数 executable_path:driver = webdriver.Firefox(executable_path="/path/to/geckodriver")
如果你使用 Firefox 或 Chrome,你会看到这个操作打开一个浏览器。driver.get('https://passport.weibo.cn/signin/login')
如果你使用 Firefox 或 Chrome,你会看到这个操作打开微博手机版的登录页面。name_field = driver.find_element_by_id('loginName') # 用户名输入框password_field = driver.find_element_by_id('loginPassword') # 密码输入框submit_button = driver.find_element_by_id('loginAction') # 登录键
输入内容name_field.send_keys('你的用户名')password_field.send_keys('你的密码')
如果你使用 Firefox 或 Chrome ,你会看到页面中的两个输入框被填入你在程序中输入的文字。submit_button.click() # 单击元素
如果你需要使用回车键,可以使用send_keys()来发送回车(Keys.RETURN),我在这里不展开描述。name_field.clear() # 清除用户名区域name_field.send_keys('你的用户名')password_field.clear() # 清除密码区域password_field.send_keys('你的密码')
获取 Cookiesdriver.get_cookies()
它是一个字典文件的列表,每一个字典文件是一个 Cookie。如果你们要在其他 WebDriver 或浏览器中使用这组 Cookies ,使用一个循环来给 WebDriver 利用add_cookie方法添加是比较标准的方法:for cookie in driver.get_cookies(): another_driver.add_cookie(cookie)
等待网页载入import time# 在获取网页后time.sleep(2) # 等待2秒
这种做法比较简单,但也十分粗暴:因为你无法确定2秒时间足够让网页加载完成。每次打开网页的时间受限于许多因素,你可能很难用一个固定的时间来决定。而 Selenium 本身也提供了一些好用的方法:from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 在获取网页后WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.ID, 'loginName'))) # 等待 id 为 loginName的元素出现,最多20秒
import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.PhantomJS()driver.get('https://passport.weibo.cn/signin/login')WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.ID, 'loginName')))time.sleep(1)name_field = driver.find_element_by_id('loginName')name_field.clear()name_field.send_keys('你的账号')password_field = driver.find_element_by_id('loginPassword')password_field.clear()password_field.send_keys('你的密码')submit_button = driver.find_element_by_id('loginAction')submit_button.click()print(driver.get_cookies())
关键词:学会,猴子