selenium 实现头条关键字爬取

2023-11-13

from selenium import webdriver
# 设立米嗯
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from lxml import html
import time
from urllib import request
import re
import csv

CONTENT =[]

def page_sourc(url):
    driver_path = r'D:\Desktop\chromedriver_win32\chromedriver.exe'
    driver = webdriver.Chrome(executable_path=driver_path)
    driver.get(url)

    inputTag = driver.find_element_by_xpath("//input[@class='tt-input__inner']")
    inputTag.send_keys("旅游被坑")

    current_window = driver.current_window_handle

    WebDriverWait(driver=driver,timeout=10).until(
        EC.presence_of_element_located((By.XPATH,"//input[@class='tt-input__inner']"))
    )
    subBtn =driver.find_element_by_xpath("//button[@class='tt-button tt-button--default']")
    subBtn.click()

    all_window = driver.window_handles
    for window in all_window:
        if window != current_window:
            driver.switch_to.window(window)
    current_window = driver.current_window_handle

    WebDriverWait(driver=driver,timeout=10).until(
        EC.presence_of_element_located((By.XPATH,"//div[@class='sections']//div[@class='title-box']/a"))
    )
    time.sleep(2)
    for i in range(10):
        driver.execute_script(
            "window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;")
        time.sleep(3)
        source = driver.page_source
        sprider(source)


def sprider(source):
    etree = html.etree
    text = etree.HTML(source)

    links = text.xpath("//div[@class='sections']//div[@class='title-box']/a/@href")
    links = list(map(lambda x : 'https://www.toutiao.com'+ x ,links))

    titles = re.findall(r'<span class="J_title".*?>(.*?)</span>',source,re.DOTALL)
    contonts = []
    for title in titles:
        contont = re.sub(r'<.*?>','',title)
        contonts.append(contont.strip())

    for value in zip(links, contonts):
        links,contonts = value
        content = {
            '标题': contonts,
            '网址':  links
        }
        # print(poem)
        CONTENT.append(content)

def wrte_csv(CONTENT):
    headers = ['标题','网址']

    with open('D://旅游被坑.csv','a',newline='') as fp:
       writer = csv.DictWriter(fp,headers)
       writer.writeheader()
       writer.writerows(CONTENT)



def main():
    url='https://www.toutiao.com/'
    page_sourc(url)
    wrte_csv(CONTENT)


if __name__ == '__main__':
    main()

1.因为头条也是爬取其他地方的资源所以想要去去除重复的资源不可能
2.我把结果保存在d盘csv文件里面的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium 实现头条关键字爬取 的相关文章

  • DirectShowPlayerService::doSetUrlSource: Unresolved error code

    Qt 编译后不能播放音乐或者视频 经过搜索得知 Qt 中的多媒体播放 底层是使用DirectShowPlayerService 需要一个DirectShow解码器 例如LAV Filters LAV Filters的下载地址如下 http
  • FPGA的基本结构

    FPGA主要由以下几部分组成 1 基本可编程逻辑单元 CLB 2 可编程输入输出单元 IOB 3 嵌入式块RAM 4 内嵌的底层功能单元和嵌入式专用硬核 5 完整的时钟管理模块 6 丰富的布线资源 一 总体结构 二 基本组成部分 1 可配置
  • NMS(非极大值抑制)算法详解与示例

    一 NMS是什么 NMS non maximum suppression 即非极大值抑制 广泛应用于传统的特征提取和深度学习的目标检测算法中 NMS原理是通过筛选出局部极大值得到最优解 在2维边缘提取中体现在提取边缘轮廓后将一些梯度方向变化
  • vue设置延时

    参考资料 https blog csdn net zc ad article details 86235227 一定要创建一个timer 然后调用延时之前先清除timer的延时 clearTimeout this timer 清除延迟执行
  • scala数据结构

    元组 val tuple Bigdata 2020 748 333 容器 collection Scala Collection Seq 索引0 1 2 LinearSeq gt 列表 相同类型 不可变 队列 列表 var strList
  • SpringIOC和AOP介绍

    Spring介绍 1 spring是轻量级的开源的JavaEE框架 2 Spring可以解决企业应用开发的复杂性 3 Spring有两个核心部分 IOC AOP 1 IOC 控制反转 把创建好的对象给Spring进行管理 2 AOP 面向切
  • 模式识别、计算机视觉、机器学习领域的顶级期刊和会议(整理)

    部分AI刊物影响因子05 SCIIF 2005 2004 JMLR 4 027 5 952 机器学习 PAMI 3 810 4 352 模式识别 IJCV 3 657 2 914 计算机视觉 TOIS 4 529 4 097 AIJ 2 6
  • Neo4j下载安装以及Neo4j浏览器详细说明

    1 下载 需要提前安装 JDK 自行百度 前往官网 https neo4j com download center community 如上图 下载共有三个模式 企业版本 社区版本和桌面版本 企业版本收费的 社区版本免费 只是个人运行建议直
  • 请告诉我一些常见的泰勒公式展开

    常见的泰勒公式展开有 1 二项式展开 x y n nCkx n k y k 2 三角形展开 a b c 2 a 2 b 2 c 2 2ab 2ac 2bc 3 多项式展开 x y z 3 x 3 y 3 z 3 3x 2y 3x 2z 3x
  • 勤于奋:的日常,写程序,做任务,赚美刀,分享我的成长

    大家好 欢迎来到勤于奋 今天跟大家聊聊我的日常吧 大家好 欢迎来到勤于奋国外LEAD联盟营销 勤于奋时刻提醒自己 只有勤快和奋斗合一体 天天坚持去做一件事情 才能有可能成功 所以我很喜欢这个名字 每天我都会关注程序语言的发展 开发技术的更新
  • springboot 2.7集成swagger 3

    目录 前言 错误原因 报错内容 报错原因 解决方案 依赖配置 webmvc配置 swagger配置 结果 前言 springboot集成swagger2技术比较成熟 基本不挑版本 网上技术文章一找一大堆 不在此赘述 但是sprngboot
  • 线路编码(NRZ,NRZI,8B/10B,Manchester等)

    0 前言 编码根据作用和场景不同分为信源编码 信道编码和线路编码 信源编码 降低信源符号之间的相关性和冗余度 通过编码提高每个符号的信息量 具体说 就是针对信源输出符号序列的统计特性来寻找某种方法 把信源输出符号序列变换为最短的码字序列 比
  • HashMap循环遍历方式及其性能对比

    HashMap循环遍历方式及其性能对比 主要介绍HashMap的四种循环遍历方式 各种方式的性能测试对比 根据HashMap的源码实现分析性能结果 总结结论 1 Map的四种遍历方式 下面只是简单介绍各种遍历示例 以HashMap为例 各自
  • IDEA调试技巧之如何让调试器在特定的地方停下(根据条件调试)

    首先打个断点 在代码的左侧点击即可 右键断点 取消勾选 已启用 然后在条件中填写逻辑表达式 当该逻辑表达式为真时 调试才停下否则继续
  • System.currentTimeMillis()计算方式与时间的单位转换

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 时间的单位转换 1秒 1000毫秒 ms 1毫秒 1 1 000秒 s 1秒 1 000 000 微秒 s 1微秒 1 1 000 000秒 s 1秒 1 000 00
  • 黑话管理:偶像

    http blog csdn net shenyisyn article details 4228387 与朋友一起闲聊老提到一个话题 管理者大部分下属都很崇拜 因此成为他们的偶像是很重要 这个观点很大程度上很有道理 作为偶像 往往在精神上
  • 数据结构之线性结构

    上一讲 程序 数据结构 算法 上次介绍了数据结构相关内容理解 这次介绍数据结构另一块内容线性结构理解 线性结构存储形式类似一列火车 这种包含有数组 链表 队列 栈 1 数组 是数据结构中逻辑结构分类其中一种 物理结构 以连续地址存储单元把数
  • U8接口开发

    一 官方接口 OPENAPI 第三方系统部署在外网 互联网 与 U8 对接的场景 限制 做不了上下游关联生单 比如采购入库单无法关联采购到货单 不支持事务 优势 安全 接口定义面向消费者 使用相对最简单 数据标准 json 协议 https
  • oracle enable broken,[20200220]关于SQLNET.EXPIRE_TIME and ENABLE=BROKEN的总结.txt

    20200220 关于SQLNET EXPIRE TIME and ENABLE BROKEN的总结 txt 昨天做了大量关于SQLNET EXPIRE TIME and ENABLE BROKEN的测试 晚上再仔细看 测试做的有点乱 做一
  • 页面发送指令到后端处理控制PLC

    框架ssh 后台 1 后台写一个控制类 control action 控制发送指令 Utils sendMessage toServer m1 给中间件httpserverService 2 control类要在applicationCon

随机推荐