• 爬虫及词云总结


    0.需求

    需求:在一个【无下一页】的【动态页面】中获取需要用【查看更多】才能获取完整的信息(【爬虫】),并生成【词云】。
    要点:在列表页面用请求头里的参数获取所有数据,并根据这个构建新的url,以此获取每一个完整信息。

    1.爬虫

    1.1库

    requests——发http请求
    re——通过正则表达式对字符串进⾏匹配
    json——处理 JOSN 数据(json是一种数据交换格式)

    1.2请求

    1.2.0基础

    两种请求方法。根据实际请求类型选择。

    1. get(url, params, args)
    2. post(url, data, json, args)。data 为要发送到指定 url 的字典、元组列表、字节或文件对象;json 为要发送到指定 url 的 JSON 对象。根据网页请求头里面的内容类型确定。

    必要伪装

    1. 加入请求头,改变User-Agent——从F12→Network→XHR→heads获取
    2. 代理IP。同一个IP访问过多会被封禁

    1.2.1动态页面

    问题:无法通过URL获取页面内容。
    解释:它是每次加载会不同的页面,点击下一页时上面的URL不变,且用查看源码看不到内容。
    方法:获取真实url;利用selenium模拟点击。因后者慢,选择前者。通过F12看真实请求URL,并根据变化规律构建所有真实URL。因为是post请求,所以需要post的参数来构建。

    1.2.2异步加载

    问题:无法通过URL获取全部内容。
    解释:在需要新的数据时,无需全部加载,而是只加载需要的。AJAX(Asynchronous JavaScript and XML)是动态网页用到的东东,可以做到异步更新。本质还是动态页面。
    方法:依旧是获取真实URL,根据每次的URL构成找到规律获取全部URL。

    1.3获取数据

    方法:利用BeautifulSoup对html进行解析(基于css选择器);利用xpath(基于HTML的树结构和节点进行取值);利用JOSN的字段获取,需要返回结果是该格式

    1.4清洗数据

    问题:得到的内容里面有html的标签。
    方法:构建一个模式字符串替换结果中不要的。

    regex = re.compile(r'<.*?>')
    res_str = regex.sub('', to_replace_str)
    
    • 1
    • 2

    2.词云

    2.1库

    jieba——中文分词库
    wordCLoud——词云展示

    2.2例子

    获取内容→分词→根据参数生成词云

    import jieba,numpy
    from wordcloud import WordCloud
    
    words = open('a.txt',encoding='utf-8').read()
    new_words=' '.join(jieba.cut(words))
    
    # alice_mask=numpy.array(Image.open('./white.jpeg'))
    # wordcloud=WordCloud(width=1000, height=860, margin=2, mask=alice_mask, background_color='#FFFFFF',font_path='./song.ttf')
    
    wordcloud=WordCloud(width=1000, height=860, margin=2, background_color='#FFFFFF',font_path='./song.ttf')
    
    wordcloud.generate(new_words)
    wordcloud.to_file('aa.jpg')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    用户态与内核态
    Vue的路由使用,Node.js下载安装及环境配置教程 (超级详细)
    【Gensim概念】02/3 NLP玩转 word2vec
    python列表list的index方法的用法和实例
    C#面:C#面向对象的思想主要包括什么?
    js设计模式:享元模式
    简单聊聊k8s,和docker之间的关系
    【Verilog基础】一文搞懂线性反馈移位寄存器(LFSR)
    华为云云耀云服务器L实例评测|云服务器初体验
    mvc-servlet
  • 原文地址:https://blog.csdn.net/weixin_44807751/article/details/128047617