request库+selenium
时间: 2023-10-09 07:11:01 浏览: 122
requestly-selenium:请求Selenium
requests库和selenium库是用于网络请求和网页自动化的两个Python库,它们可以结合使用来实现更为复杂的网络爬虫和数据采集任务。
下面是一个使用requests和selenium结合的示例程序,可以模拟登录知乎并获取用户信息:
```python
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 模拟登录知乎
def login(username, password):
driver = webdriver.Chrome()
driver.get("https://www.zhihu.com/signin")
# 等待页面加载完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "username")))
# 输入用户名和密码
driver.find_element_by_name("username").send_keys(username)
driver.find_element_by_name("password").send_keys(password)
# 点击登录按钮
driver.find_element_by_css_selector("button.SignFlow-submitButton").click()
# 等待登录成功
WebDriverWait(driver, 10).until(EC.url_contains("https://www.zhihu.com"))
# 获取登录后的cookies
cookies = driver.get_cookies()
driver.quit()
return cookies
# 使用requests获取用户信息
def get_user_info(cookies):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get("https://www.zhihu.com/api/v4/me", headers=headers, cookies=cookies)
data = response.json()
return data
# 测试程序
if __name__ == "__main__":
cookies = login("your_username", "your_password")
user_info = get_user_info(cookies)
print(user_info)
```
以上代码中,首先使用selenium模拟登录知乎获取登录后的cookies,然后使用requests库发送带有cookies的请求获取用户信息。在requests中,我们可以通过headers参数设置请求头,通过cookies参数传递cookies。
需要注意的是,由于知乎在登录时需要输入验证码,上述代码可能需要手动输入验证码后才能登录成功。
阅读全文