selenium的使用
- selenium 是web应用程序测试系统,python中提供了selenium库供使用,主要通过Webdriver调用浏览器。
- 常用元素查找方法:
find_element_by_id(),find_element_by_class_name(),find_element_by_name()
find_element_by_css_selector(),find_element_by_tag_name(),find_element_by_xpath()
3. 执行JavaScript: execute_script()
cookielib与urllib2结合使用
cookielib主要是提供可存储cookie的对象,比如要保存cookie到文件,或者使用某个获取到的cookie。
以下代码示例都是基于用登陆后获取的cookie爬取网页数据,实际上微博有Sina Visitor System,暂未找到方法实现登陆。
# -*- coding=utf-8 -*-
from lxml import etree
from fake_useragent import UserAgent
from selenium import webdriver
import time
import requests
import urllib2
import cookielib
url = "https://weibo.com/"
ua = UserAgent()
header = {
'User-Agent': ua.random,
'Cookie': '登陆后请求头中获取的cookie'
}
def selenium_login():
browser = webdriver.Firefox()
try:
browser.get("https://zhihu.com/")
print 'cookies before:'
print browser.get_cookies()
time.sleep(2)
print browser.page_source
browser.find_element_by_class_name("SignContainer-switch").click()
browser.find_element_by_name("username").clear()
browser.find_element_by_name("username").send_keys("")
browser.find_element_by_name("password").clear()
browser.find_element_by_name("password").send_keys("")
browser.find_element_by_xpath("//button[@type='submit']").submit()
browser.implicitly_wait(5)
time.sleep(5)
print 'cookies after:'
print browser.get_cookies()
browser.quit()
except Exception, e:
print str(e)
def lib2_login():
cookie_jar = cookielib.CookieJar()
request = urllib2.Request(url, headers=header)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
response = opener.open(request)
print response.read()
def req_login():
session = requests.session()
response = session.post(url, headers=header)
print response.status_code
print response.text
if __name__ == '__main__':
req_login()