使用之前请确保自己chrome浏览的版本与chromedriver的版本一致,
Mac确保chromedriver已经放到python的bin目录中
Windows确保chromedriver已经放到python.exe同目录中
当前selenium Version: 3.141.0,4版本后面改为:find_element(By.CLASS_NAME, VALUE)等等
import time
from lxml.html import etree
from selenium import webdriver
headers = {
'User-Agent': 'USER-AGENT' # 填写自己浏览器的user-agent
}
def test_requests(url):
browser.get(url=f'{url}{send_content}')
handle1 = browser.current_window_handle # 保留当前页面,如果有需要翻页可以使用到
# selenium 4版本使用browser.find_element(By.CLASS_NAME, 'news-list')
new_list = browser.find_element_by_class_name('news-list') # 根据clss定位ul(没有id,只能用class,利用id的唯一性是最优解)
# selenium 4版本使用browser.find_elements(By.TAG_NAME, 'h3')
ul_list = new_list.find_elements_by_tag_name('h3') # 获取ul中所有H3标签
for ul in ul_list:
a_elements = ul.find_elements_by_tag_name('a') # 查询H3标签中所有的a标签
for a in a_elements:
print(a)
time.sleep(1) # 用睡眠时间等待或者使用IP池
a.click() # 点击每个a标签
handles = browser.window_handles[1:] # 获取浏览器的所有页面,并将第一个总页面切片掉
print(len(handles))
for ha in handles:
browser.switch_to.window(ha) # 循环进入每一个页面解析需要的内容
html = browser.page_source
tree = etree.HTML(html)
title = tree.xpath('/html/body/div[2]/div[2]/div[2]/div/div[1]/h1/text()')
print(title)
if __name__ == '__main__':
first_url = 'https://weixin.sogou.com/weixin?ie=utf8&s_from=input&_sug_=n&_sug_type_=&type=2&query='
send_content = '企业预警通·每日风险预警早报2024年8月13日星期二'
browser = webdriver.Chrome()
test_requests(first_url)
browser.close()