Python进阶之爬虫进阶selenium的使用

不在以文字赘述了,直接上代码,代码中都已经做了注解。。。其余内容稍后更新
# encoding=utf-8

__author__ = 'Jonny'
__location__ = '西安'
__date__ = '2018-05-14'

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
import time

def main_test1():
    #调用一个谷歌浏览器驱动,创建一个浏览器
    driver = webdriver.Chrome()
    #设置窗口在最大化
    driver.maximize_window()
    #自定义窗口大小
    # driver.set_window_size(width=200,height=300)
    #get方法可以传递网址参数,也可以传递本地文件路径
    driver.get('http://www.baidu.com')
    #返回网页的主题:(例如:百度一下,你就知道)
    print(driver.title)
    print('---------------------------------------')
    input_element = driver.find_element_by_id('kw')
    #同作用替换;
    input_element = driver.find_element(By.ID,'kw')
    #输入查询的关键词,并提交查询的命令,
    input_element.send_keys('python')
    input_element.submit()
    #与楼上语句作用是相同的
    driver.find_element_by_id('su').click()
    try:
        #个人理解:用于判断之前输入的要查询关键词,是否与查询到的网页相关
        #c构造函数,接受一个WebDriver实例,并在几秒钟内超时。
        # until:把驱动程序提供的方法称为参数,直到返回值不是假的。
        # title_contains:期望检查标题包含一个区分大小写的子串。标题是标题期望返回的片段当标题匹配时,否则是假的
        WebDriverWait(driver,100).until(EC.title_contains('python'))
        print(driver.title)
    finally:
        time.sleep(20)
        #退出,并关闭所有相关进程,注意和driver.close()的区别,这个是只关掉窗口,不关闭相关进程
        driver.quit()
''''
find_element_by_xx方法可以定位单一元素,如果要定位一组元素需要用find_elements_by_xxx方法,(注意该方法返回值是一个列表对象)
定位一组对象一般用于以下场景:
    批量操作对象,比如说将页面上所有的checkbox都勾上
    先获取一组对象,在在这组对象中过滤除需要的具体需要定位的一些对象,比如说在上一条中定位出的所有CheckBox中定位某一个CheckBox。
'''
browser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://blog.csdn.net/m0_37338590')
#通过标签属性查找
result = browser.find_element_by_class_name('description')
# result =  browser.find_element(By.CLASS_NAME,'description')
print(result.text)
print('-------------------------------------------')
#通过ID属性寻找
result = browser.find_element_by_id("asideProfile")
# result = browser.find_element(By.ID,"asideProfile")
print(result.text)
print('-------------------------------------------')
#通过标签属性名差查找
result = browser.find_element_by_name("shenma-site-verification")
# result = browser.find_element(By.NAME,"shenma-site-verification")
print(result.text)
print('-------------------------------------------')
#通过元素内容
result = browser.find_element_by_link_text('路由器设置VPN,随时随地访问内部网络')
# result = browser.find_element(By.LINK_TEXT,"python")
print(result.text)
print('-------------------------------------------')
#通过元素部分内容
result = browser.find_element_by_partial_link_text('python')
# result = browser.find_element(By.LINK_TEXT,"python")
print(result.text)
print('-------------------------------------------')
#通过CSS选择器
result = browser.find_element_by_css_selector("#uid")
print(result.text)
print('-------------------------------------------')
#还可以利用Xpath实现,具体实现方法在这里就不做赘述了

# if __name__ == '__main__':
#     main_test1()

具体的案例开发实例请参看Python进阶之借助selenium爬取淘宝商品信息


你可能感兴趣的:(python)