您现在的位置是:首页 >技术交流 >网络爬虫--动态网页爬虫(补充)网站首页技术交流

网络爬虫--动态网页爬虫(补充)

等待的树 2023-06-14 16:00:03
简介网络爬虫--动态网页爬虫(补充)

还有更多的鼠标相关的操作。
click_and_hold(element):点击但不松开鼠标。
context_click(element):右键点击。
double_click(element):双击。

更多方法请参考:http://selenium-python.readthedocs.io/api.html

为什么需要行为链条?
因为有些网站可能会在浏览器端做一些验证行为是否符合人类的行为来做反爬虫。这时候我们就可以使用行为链来模拟人的操作。行为链有更多的复杂操作,比如双击,右键等,在自动化测试中非常有用。

隐式等待和显式等待:

  1. 隐式等待:指定一个时间,在这个时间内一直会处于等待状态。隐式等待需要使用driver.implicitly_wait
  2. 显式等待:指定在某个时间内,如果某个条件满足了,那么就不会再等待,如果在指定的时间内条件都不满足,那么就不会再等待了。显式等待用的方法是from selenium.webdriver.support.ui import WebDriverWait。示例代码如下:
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    driver = webdriver.Chrome()
    driver.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc")
    WebDriverWait(driver,100).until(
        EC.text_to_be_present_in_element_value((By.ID,"fromStationText"),"长沙")
    )
    WebDriverWait(driver,100).until(
        EC.text_to_be_present_in_element_value((By.ID,"toStationText"),"北京")
    )
    btn = driver.find_element_by_id("query_ticket")
    btn.click()
    

打开新窗口和切换页面:

  1. selenium中没有专门的打开新窗口的方法,是通过window.execute_script()来执行js脚本的形式来打开新窗口的。
    window.execute_script("window.open('https://www.douban.com/')")
    
  2. 打开新的窗口后driver当前的页面依然还是之前的,如果想要获取新的窗口的源代码,那么就必须先切换过去。示例代码如下:
    window.switch_to.window(driver.window_handlers[1])
    

设置代理:

设置代理通过ChromeOptions来设置,示例代码如下:

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://110.52.235.176:9999")
driver = webdriver.Chrome(executable_path="D:ProgramAppchromedriverchromedriver73.exe",chrome_options=options)

driver.get("http://httpbin.org/ip")

补充:

  1. get_property:获取html标签中官方写好的属性。
  2. get_attribute:获取html标签中官方和非官方的属性。
  3. driver.save_screenshoot:获取当前页面的截图,有时候请求失败了,那么可以把当前网页的截图保存下来,方便后期进行分析。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。