一、项目1.0
在百度搜索中输入关键字
模拟人自动由上向下滑动,寻找目标网页
一页一页的去翻(第一页没找到就滑到底部点击下一页)
找到目标网页就点击进去
实现代码如下:
from selenium import webdriver
import time
def main():
searchBox = driver.find_element_by_id("kw")
searchBox.send_keys('鸡群')
time.sleep(2)
button = driver.find_element_by_id("su")
button.click()
time.sleep(2)
#窗口最大化
driver.maximize_window()
time.sleep(2)
get_information(0, True)
def get_information(i, find_key):
# 抓取信息
target_link = 'www.yangji.com'
while find_key:
i += 1
list_link = driver.find_elements_by_class_name('c-showurl')
link_num = len(list_link)
print(f'第{i}页/{link_num}')
for link in list_link:
link_content = link.get_attribute('textContent').strip()
# print(link_content)
if target_link in link_content:
find_key = False
try:
driver.execute_script("arguments[0].scrollIntoView();", link) #滚动至目标元素可见位置
time.sleep(2)
link.click()
# arguments[0].scrollIntoView(),不能随意使用,会先把元素element对象的表格“顶端”移动到与当前窗口的“顶部”对齐,如果元素当前可见,可能移动后就不可见了,导致定位报错。
#因为会把元素顶端对齐窗口顶部,有时候也会出现跳转后,元素仍然不可见的情况。如果是需要点击这个元素,可以使用下面这种方式:
except:
driver.execute_script("arguments[0].click();", link) #直接点击不可见的目标元素,不再先跳转。
return
else:
pass
n_button = driver.find_elements_by_class_name('n')[-1]
driver.execute_script("arguments[0].scrollIntoView();", n_button)
time.sleep(2)
n_button.click()
time.sleep(2)
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
time.sleep(2)
main()
driver.close() #driver.close()关闭当前窗口,关闭了最开始的window
quit = input('确认关闭驱动吗?(输入确认)')
driver.quit() #退出驱动关闭所有窗口
print('结束')
二、项目2.0
在项目1.0的基础上,进入打开的新网页中,切换到新网页中模拟人操作浏览器向下滑动浏览,然后向上回到页面顶部,最后点击站内的网页跳转到新的站内网页去。
代码如下:
from selenium import webdriver
import time
import random
def main():
searchBox = driver.find_element_by_id("kw")
searchBox.send_keys('鸡群')
time.sleep(2)
button = driver.find_element_by_id("su")
button.click()
time.sleep(2)
#窗口最大化
driver.maximize_window()
time.sleep(2)
get_information(0, True)
time.sleep(3