selenium爬取搜狗网站新闻的小Demo

发布于:2024-08-18 ⋅ 阅读:(122) ⋅ 点赞:(0)

使用之前请确保自己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()


网站公告

今日签到

点亮在社区的每一天
去签到