# 引入休眠等待库
import time
# 引入selenium的浏览器驱动接口
from selenium import webdriver
# 引入chrome选项
from selenium.webdriver.chrome.options import Options
# 配置chrome浏览器(无头模式)
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=chrome_options)
# 没有写错,就是要页面够长.不然页面内容会点不到 (第一个坑)
driver.set_window_size(1024, 7680)
# 加载页面
driver.get("https://www.example.com")
# 这里进行嵌套,模拟点击打开详细页,可以抓取详细内容
for i in range(1,21):
# 根据css中的class查找对应的element 集合
counts = len(driver.find_elements_by_css_selector(".item_con_list .position_link"))
print ("第" + str(i) + "页,本页共有:" + str(counts) + "条记录")
for j in range(counts):
# 新开一个窗口
url = driver.find_elements_by_css_selector(".item_con_list .position_link")[j]
print(' 跳转第' + str(j) + "条:" + url.get_attribute("href"))
url.click()
time.sleep(1)
# 获取当前窗口句柄集合
handles = driver.window_handles
# 切换窗口
for handle in handles:
if handle!=driver.current_window_handle:
driver.switch_to_window(handle)
# 找到内容
try:
data = driver.find_element_by_class_name("job_bt").text
except:
print("这个页面没拿到内容")
driver.save_screenshot(i+str(j)+".png")
# 写入内容 ,要保持编码一致,不然会出现保存出错 (第二个坑)
fileObject = open('example.txt', 'a', encoding='utf-8')
fileObject.write(data)
fileObject.write('\n')
fileObject.close()
break
#关闭当前窗口
driver.close()
#切换(主)窗口
driver.switch_to_window(handles[0])
time.sleep(1)
#生成当前页面快照,调试用的
driver.save_screenshot("current.png")
# 跳转到下一页
driver.find_element_by_class_name("pager_next").click()
print("跳转到下一页")
time.sleep(5)
# 关闭浏览器
driver.quit()