本意是想解决下xxqg的问题的,想看下自动化框架的问题,直接摸到了自动化测试中的chrome工具chromedriver。用接下来的示例看看吧。
安装
访问https://chromedriver.storage.googleapis.com/index.html
下载适配你chrome版本的chromedriver,放到个人的chrome安装目录
了解下selenium ,看下关于自己的语言如何介入。
测试缘由
有位大佬在做SEO优化,想帮他测下关键词排名,顺带刷榜,本来直接爬是个超级简单的方式,正好看到这个,画蛇添足下。
示例 by python
# coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os,time,re
# 引入 chromedriver.exe
chromedriver = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
browser = webdriver.Chrome(chromedriver)
# 设置浏览器需要打开的 url
url = "https://www.baidu.com"
browser.get(url)
time.sleep(5)
# 在百度搜索框中输入关键字 " 扫描仪 "
lists = ["打印机","复印机","扫描仪"......]
for list in lists:
find_input = browser.find_element_by_id("kw")
find_input.send_keys(list)
time.sleep(1)
# 单击搜索按钮
browser.find_element_by_id("su").click()
time.sleep(5)
find_it = False
ass = 1
# bss = 0
link_text = ""
while True:
try:
# get_urls = browser.find_elements_by_class_name("t")
#根据观察,所有百度所有连接都有class = t,这是一个很好的切入口
get_urls = browser.find_elements_by_class_name("t")
if len(get_urls) == 0 :
try:
#测试下一页的按钮,并给予10秒等待,以防止页面未加载
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "下一页>")))
element.click()
except Exception as identifier:
.........
print("Sry.Not find")
break
ass += 1
time.sleep(2)
continue
else:
for get_url in get_urls:
# bss += 1
#匹配关键词
a = re.match('xxxx',get_url.text)
if re.match('xxxx',get_url.text) != None:
# get_url.click()
find_it = True
link_text = get_url.text
print(link_text)
if not find_it:
try:
#测试下一页的按钮,并给予10秒等待,以防止页面未加载
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "下一页>")))
element.click()
except Exception as identifier:
........
print("Sry.Not find")
break
ass += 1
time.sleep(2)
# bss = 0
continue
else:
print('Find it!')
time.sleep(2)
#点击链接
# get_url.click()
.......
break
except Exception as es:
print('Not Find')
try:
#测试下一页的按钮,并给予10秒等待,以防止页面未加载
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "下一页>")))
element.click()
except NoSuchElementException as identifier:
.......
print("Sry.Not find")
break
ass += 1
time.sleep(2)
# bss = 0
continue
if find_it :
print('这是在第几页:'+str(ass))
# print('这是在第几个:'+str(bss))
find_input.clear()
print('')
print('------------------------------------')
# 通过筛选器找到next
time.sleep(5)
# 回退
# browser.back()
time.sleep(1000)
# 关闭浏览器
browser.quit()
网友评论