selenium爬取新闻做成词云(以及selenium的xpath查找方法)

一开始是想用qq空间说说做词云的,然而qq空间需要用cookies以及其他加密的东西,退而求其次搞搞新闻吧。

直接上代码了

# -*-coding:utf-8 -*-
from selenium import webdriver
import wordcloud #词云制作器
import jieba#强大的中文分词库
from scipy.misc import imread#读取图片
import time

url=‘https://news.nuist.edu.cn/main.htm‘
news=webdriver.Chrome()
news.get(url)

def getnews():
    raw=""
    news.find_element_by_link_text(‘+更多‘).click()

    for n in range(1,60):
        news.find_element_by_class_name(‘pageNum‘).send_keys(str(n))
        news.find_element_by_class_name(‘pagingJump‘).click()#换页读取
        boxes=news.find_elements_by_xpath(‘//span[@class="col_title"]/a[@target="_blank"]‘)xpath读取新闻标题
        for box in boxes:
            raw+=box.text

    return raw

def delit(raw):#去除中文字符,后来发现好像多此一步
    r = ‘,。、【 】 “”:;()《》‘
    for i in r:
        if i in raw:
            raw=raw.replace(i,‘‘)

    return raw

def makecloud(raw):
    words=‘ ‘.join(jieba.lcut(raw))
    mask=imread(‘apicture.JPG‘)#背景图片
    cloud=wordcloud.WordCloud(font_path=‘msyh.ttc‘,width=1080,height=720,mask=mask,max_words=400)
    cloud.generate(words)
    cloud.to_file(‘pic.png‘)

def main():
    raw=getnews()
    raw1=delit(raw)
    makecloud(raw1)
    news.close()

main()

有时候我们在html源码里面难以获得我们想要的元素的id,class只有不特殊的tag时候怎么办?这时候就要用xpath方法来查找。

我很讨厌给你一堆定义,那就直接上例子:

我要提取这一段文字,然而不能用find_element_by_id,也不能用classname,甚至因为链接是变化的所以连linktext也不行,这时候就只能硬着头皮来学xpath了

首先xpath提供了 // 方法就是任意位置查找,相对/根目录的一长串绝对路径,这里 我们的元素可以这么输入:

//spam[@class="col_title"]/a[@target="_blank"]

啥意思呢,上面图片我们可以看到一堆层级关系我们不管,我们只找新闻标签a和父级,a有target属性值为_blank,那么a[@target=‘_blank‘]就是标签名字为a,属性叫target且值为_blank的元素

但是我们往下翻有些不相关的信息也是这个值,那这个标签加上他爸爸总不一样了吧,加上父级/,标签为span,属性class值为”col_title“的,总归不一样了吧。

当然再不济叫上爷爷级总行了。  这种方法是html5的,当然selenium也加上了这个功能。

关于wordcloud和jieba的使用,参看https://www.icourse163.org/learn/BIT-268001?tid=1002788003#/learn/content?type=detail&id=1004116227

好了,说这么多展示一下结果



原文地址:https://www.cnblogs.com/batt1ebear/p/9763764.html

时间: 2024-08-30 02:44:03

selenium爬取新闻做成词云(以及selenium的xpath查找方法)的相关文章

[Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

一. 文章介绍 前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息. 用户信息:包括用户ID.用户名.微博数.粉丝数.关注数等. 微博信息:包括转发或原创.点赞数.转发数.评论数.发布时间.微博内容等. 它主要通过从文本txt中读取用户id,通过"URL+用户ID" 访问个人网站,如柳岩: http://weibo.cn/guangxianliuya 因为手机端数据相对精简简单,所以采用输

用selenium爬取淘宝美食

'''利用selenium爬取淘宝美食网页内容''' import re from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.su

爬虫爬取新闻(二)

第一版爬取新闻的用下来最大的感受是: 爬取多少条不能自己设置 速度太慢了 这次把这两点优化下: 通过读取用户输入的数字来设置每个频道爬取新闻数量,采用多线程优化爬取速度 1 # -*- coding:utf-8 -*- 2 3 import os,time 4 import sys 5 import urllib 6 from urllib import request 7 import re,threading 8 from lxml import etree 9 10 11 def Stri

[python爬虫] Selenium爬取CSDN博客摘要及问题

本文主要是采用Selenium来爬取CSDN的博文摘要,为后面对CSDN的热点技术.近几年专家发表的博客作数据分析.由于采用BeautifulSoup爬取该网站会报错"HTTPError: Forbidden",所以作者采用Selenium爬取.同时,在爬取过程中遇到了局部动态更新的问题,无法定位换页的问题,作者采用Firebug进行分析,也希望读者提出更好的方法.代码下载地址: 一. CSDN博客网站分析及问题 本文主要爬取CSDN专家的博客,因为专家的论文水平相对高点,同时专栏较多

[python爬虫] Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium爬取我的个人博客信息,然后存储在数据库MySQL中,以便对数据进行分析,比如分析哪个时间段发表的博客多.结合WordCloud分析文章的主题.文章阅读量排名等.        这是一篇基础性的文章,希望对您有所帮助,如果文章中出现错误或不足之处,还请海涵.下一篇文章会简单讲解数据分析的过程. 一.

[Python爬虫] Selenium爬取新浪微博移动端热点话题及评论 (下)

这篇文章主要讲述了使用python+selenium爬取新浪微博的热点话题和评论信息.其中使用该爬虫的缺点是效率极低,傻瓜式的爬虫,不能并行执行等,但是它的优点是采用分析DOM树结构分析网页源码并进行信息爬取,同时它可以通过浏览器进行爬取中间过程的演示及验证码的输入.这篇文章对爬虫的详细过程就不再论述了,主要是提供可运行的代码和运行截图即可.希望文章对你有所帮助吧~ 参考文章 [python爬虫] Selenium爬取新浪微博内容及用户信息 [Python爬虫] Selenium爬取新浪微博客户

爬虫实例之selenium爬取淘宝美食

这次的实例是使用selenium爬取淘宝美食关键字下的商品信息,然后存储到MongoDB. 首先我们需要声明一个browser用来操作,我的是chrome.这里的wait是在后面的判断元素是否出现时使用,第二个参数为等待最长时间,超过该值则抛出异常. browser = webdriver.Chrome() wait = WebDriverWait(browser,10) 声明好之后就需要进行打开网页.进行搜索的操作. #使用webdriver打开chrome,打开淘宝页面,搜索美食关键字,返回

利用Selenium爬取淘宝商品信息

一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一个强大的网络数据采集工具,其可以让浏览器自动加载页面,这样,使用了异步加载技术的网页,也可获取其需要的数据. Selenium模块是Python的第三方库,可以通过pip进行安装: pip3 install selenium Selenium自己不带浏览器,需要配合第三方浏览器来使用.通过help命

使用selenium爬取网站动态数据

处理页面动态加载的爬取 selenium selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等 环境搭建: 安装:pip install selenium 获取浏览器的驱动程序:下载地址http://chromedriver.storage.googleapis.com/index.html 驱动与浏览器版本对应:https://blog.csdn.net/ezreal_tao/article/details/80808729 设置chorme