'''
1.多线程
使用消息队列 queue来通信,把每个方法得到的数据放到消息队列中,每个方法就可以当做一个子线程开启,
线程间使用queue来通信,即 put()放入,get()拿出,以前run函数中一套流程下来只是单线程,
注意,使用while True就能保证线程始终执行,使用task_done()来保证主线程等待子线程的所有消息队列执行完,
4个函数 生成url列表,请求,解析,保存,所以需要3个队列就可以了,但是线程可以随意开,最好用线程list来start线程并且设置守护主线程
然后设置 join() 使主线程等待子线程的消息队列完毕 和task_done方法是呼应的
消息队列结束 -> 主线程等待结束 -> 守护主,子线程的while停止
'''
'''
2.自动化
selenium自动化操作浏览器的驱动工具
phantomjs无界面的浏览器,运行在内存中,针对linux使用
chrome浏览器也可以设置成无界面的
条件chrome最新,selenium最小,驱动版本匹配
chrome使用无头版本:
# 创建浏览器配置对象
opt = webdriver.ChromeOptions()
# 对配置对象添加设置,设置为无头模式
opt.add_argument('headless')
# 创建浏览器对象
driver = webdriver.Chrome(chrome_options=opt)
selenium使用
pip install selenium
from selenium import webdriver
实例化浏览器对象,哪个浏览器都可以 PhantomJS浏览器
driver = webdriver.Chrome()
driver.maximize_window() 窗口最大化
driver.close() 关闭一个窗口
driver.quit() 关闭全部标签
driver.get(url) 请求网址
driver.save_screenshot('截图名字.png') 保存为截图
driver.page_source 获取源码 注意:是渲染之后的源码,这时候不用管是不是在js中了,都可以在源码中提取出来
driver.get_cookies() 获取cookie 这时候cookie是一个name对应一个value的格式
driver.current_url 获取当前的url
driver.title 获取标题
定位:
源码在driver对象中
element对象 = driver.find_element_by_xpath('xpath规则') 注意element是单数格式,精确定位返回一个对象
.find_elements_by_xpath 注意是复数格式,定位一组返回对象列表
大By语句(认识就行) from selenium.webdriver.common.by import By
driver.find_element(By.xpath, 'xpath规则')
8种定位方式:
el = driver.find_element_by_xpath('xpath规则') 用它就好
el = driver.find_element_by_id() id值
el = driver.find_element_by_name name值
el = driver.find_element_by_class_name 类名
el = driver.find_element_by_css_selector css选择器
el = driver.find_element_by_link_text 文本,标签中必须有链接
el = driver.find_element_by_partial_link_text 部分文本,同上
el = driver.find_element_by_tag_name 标签名
获取值:
el.get_attribute(属性名) 获取属性
el.text 获取文本
操作:
el.click() 点击
el.submit() 提交
el.clear() 清除
el.send_keys(data) 输入
搜索对于新跳出的标签无法切换:
driver.window_handles 获取所有的标签页列表
driver.switch_to.window(driver.window_handles[-1]) 切换到某个标签窗口,和上边结合使用
执行js:
js = 'scrollTo(0,500)' 下拉 纵坐标500px
driver.execute_script(js语句) 执行js
Iframe框架的处理:页面中嵌套页面,qq空间的登录
el = driver.find_element_by_xpath() 定位到框架 注意容易定错,是含有frame的
driver.switch_to.frame(el) 进入框架中
driver.get_cookies() 获取cookie
driver.delete_cookie(cookie的name) 删除指定
driver.delete_all_cookies() 删除所有
'''
1.多线程
使用消息队列 queue来通信,把每个方法得到的数据放到消息队列中,每个方法就可以当做一个子线程开启,
线程间使用queue来通信,即 put()放入,get()拿出,以前run函数中一套流程下来只是单线程,
注意,使用while True就能保证线程始终执行,使用task_done()来保证主线程等待子线程的所有消息队列执行完,
4个函数 生成url列表,请求,解析,保存,所以需要3个队列就可以了,但是线程可以随意开,最好用线程list来start线程并且设置守护主线程
然后设置 join() 使主线程等待子线程的消息队列完毕 和task_done方法是呼应的
消息队列结束 -> 主线程等待结束 -> 守护主,子线程的while停止
'''
'''
2.自动化
selenium自动化操作浏览器的驱动工具
phantomjs无界面的浏览器,运行在内存中,针对linux使用
chrome浏览器也可以设置成无界面的
条件chrome最新,selenium最小,驱动版本匹配
chrome使用无头版本:
# 创建浏览器配置对象
opt = webdriver.ChromeOptions()
# 对配置对象添加设置,设置为无头模式
opt.add_argument('headless')
# 创建浏览器对象
driver = webdriver.Chrome(chrome_options=opt)
selenium使用
pip install selenium
from selenium import webdriver
实例化浏览器对象,哪个浏览器都可以 PhantomJS浏览器
driver = webdriver.Chrome()
driver.maximize_window() 窗口最大化
driver.close() 关闭一个窗口
driver.quit() 关闭全部标签
driver.get(url) 请求网址
driver.save_screenshot('截图名字.png') 保存为截图
driver.page_source 获取源码 注意:是渲染之后的源码,这时候不用管是不是在js中了,都可以在源码中提取出来
driver.get_cookies() 获取cookie 这时候cookie是一个name对应一个value的格式
driver.current_url 获取当前的url
driver.title 获取标题
定位:
源码在driver对象中
element对象 = driver.find_element_by_xpath('xpath规则') 注意element是单数格式,精确定位返回一个对象
.find_elements_by_xpath 注意是复数格式,定位一组返回对象列表
大By语句(认识就行) from selenium.webdriver.common.by import By
driver.find_element(By.xpath, 'xpath规则')
8种定位方式:
el = driver.find_element_by_xpath('xpath规则') 用它就好
el = driver.find_element_by_id() id值
el = driver.find_element_by_name name值
el = driver.find_element_by_class_name 类名
el = driver.find_element_by_css_selector css选择器
el = driver.find_element_by_link_text 文本,标签中必须有链接
el = driver.find_element_by_partial_link_text 部分文本,同上
el = driver.find_element_by_tag_name 标签名
获取值:
el.get_attribute(属性名) 获取属性
el.text 获取文本
操作:
el.click() 点击
el.submit() 提交
el.clear() 清除
el.send_keys(data) 输入
搜索对于新跳出的标签无法切换:
driver.window_handles 获取所有的标签页列表
driver.switch_to.window(driver.window_handles[-1]) 切换到某个标签窗口,和上边结合使用
执行js:
js = 'scrollTo(0,500)' 下拉 纵坐标500px
driver.execute_script(js语句) 执行js
Iframe框架的处理:页面中嵌套页面,qq空间的登录
el = driver.find_element_by_xpath() 定位到框架 注意容易定错,是含有frame的
driver.switch_to.frame(el) 进入框架中
driver.get_cookies() 获取cookie
driver.delete_cookie(cookie的name) 删除指定
driver.delete_all_cookies() 删除所有
'''