zoukankan      html  css  js  c++  java
  • python 使用selenium模块实现自动搜索百度百科词条(模拟人工搜索)

    目标:模拟人工搜索百度百科词条,爬取相关信息,自动删除上一个关键词,输入新关键词,继续搜索,直到循环结束。

    代码:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    from bs4 import BeautifulSoup
    
    univs = ['清华大学', '不知道大学', '北京大学']
    AllUnivInfolist = []
    
    browser = webdriver.Firefox()  # 创建一个浏览器对象,这里还可以使用chrome等浏览器
    try:
        browser.get('https://baike.baidu.com/')  # 打开百科
        for univ in univs:
            browser.find_element_by_id('query').send_keys(univ)  # 找到输入框输入字段
            time.sleep(3)
            browser.find_element_by_id('search').send_keys(Keys.ENTER)  # 找到搜索按钮模拟点击
            time.sleep(3)
            html = browser.page_source  # 获取html页面
            soup = BeautifulSoup(html, 'html.parser')  # beautifulsoup库解析html
    
            title = soup.find_all('dt', class_="basicInfo-item name")  # key
            node = soup.find_all('dd', class_="basicInfo-item value")  # value
    
            allunivinfo = []
            titlelist = []
            infolist = []
    
            for i in title:  # 将所有dt标签内容存入列表
                title = i.get_text()
                titlelist.append(title)
            for i in node:  # 将所有dd标签内容存入列表
                info = i.get_text()
                infolist.append(info)
            for i, j in zip(titlelist, infolist):  # 多遍历循环,zip()接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。
                info = ''.join((str(i) + ':' + str(j)).split())
                allunivinfo.append(info)
            AllUnivInfolist.append(allunivinfo)
            # 模拟ctrl+a 操作 全选输入框内容
            browser.find_element_by_id('query').send_keys(Keys.CONTROL, 'a')
            time.sleep(3)
            # 删除输入框内容 (删除操作 模拟键盘的Backspace)
            browser.find_element_by_id('query').send_keys(Keys.BACK_SPACE)
            time.sleep(3)
    
    finally:
        browser.quit()
    
    with open("AllUnivInfo.txt", "wt", encoding='utf8') as out_file:
        for u in AllUnivInfolist:
            out_file.write(str(u)+'
    ')

    运行结果(部分):

  • 相关阅读:
    SPSS分类分析:决策树
    单例设计模式
    设计模式
    java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/SetWatches
    AngularJs中Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/
    如何在linux环境下配置环境变量
    MQ的面试题
    VUE框架
    SQL中and和or的区别是?
    Git的工作流程
  • 原文地址:https://www.cnblogs.com/cttcarrotsgarden/p/10770530.html
Copyright © 2011-2022 走看看