文档 Selenium Webdriver 简易教程 - wizardforcel
Selenium with Python中文翻译文档
前言 某些网站的反爬虫机制通过按钮、跳转等功能,能够防止最简单的 requests
爬虫。
Selenium WebDriver 是一个测试框架,提供了 Java、Python 等语言的 API,可以用一种更底层、更灵活的方式来操作浏览器,模拟人在浏览器上的操作。可用于 Web 应用的测试,当然也可以用于自动化批量操作(管理员批量部署、爬虫)等等。
同时,需要下载 ChromeDriver 或使用 FireFox 浏览器。
使用 我编写的一个爬虫项目 代码中出现的用法已经足狗应用于很多情形了。
初始化 1 2 from selenium import webdriverdriver = webdriver.Chrome()
我将下载的 ChromeDriver 放在 main.py
同目录下(似乎也可以放在 PATH
下),执行命令后出现了一个 Chrome 测试窗口。
Chrome 测试窗口
调用 这里是我在项目中使用的爬虫代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 url = "https://240334.yichafen.com/public/queryscore/sqcode/OsTcknwmMjkzfGZlYWYyOTQ1YjA5YmM1ZTQxOGQzMmY1NTdiYzNlYjI2fDI0MDMzNAO0O0OO0O0O.html" def get_score (name: str, student_id: str) -> str: driver.implicitly_wait(1 ) driver.get(url) driver.refresh() student_id_element = driver.find_element_by_xpath("//input[@name='s_xuehao']" ) student_id_element.clear() student_id_element.send_keys(student_id) name_element = driver.find_element_by_xpath("//input[@name='s_xingming']" ) name_element.clear() name_element.send_keys(name) button = driver.find_element_by_xpath("//*[@id='yiDunSubmitBtn']" ) button.click() driver.implicitly_wait(0.5 ) try : assert (driver.find_element_by_xpath("//*[@id='result_content']/div[2]/table/tbody/tr[2]/td[1]" ).get_attribute("innerHTML" ) == student_id) assert (driver.find_element_by_xpath("//*[@id='result_content']/div[2]/table/tbody/tr[2]/td[2]" ).get_attribute("innerHTML" ) == name) except : raise ValueError("%s %s 信息不对应" %(name, student_id)) return driver.find_element_by_xpath("//*[@id='result_content']/div[2]/table/tbody/tr[2]/td[3]" ).get_attribute("innerHTML" ) if __name__ == '__main__' : driver = webdriver.Chrome() with open('input.csv' ) as input: for line in input: name, student_id = line.strip().split(',' ) score = get_score(name, student_id) print("%s,%s,%s" % (name, student_id, score)) with open('output.csv' , 'w' ) as output: output.write("%s,%s,%s\n" % (name, student_id, score))
更多文档可见 Selenium with Python中文翻译文档 。
最后更新时间:2021-08-30 16:46:32