zoukankan      html  css  js  c++  java
  • 爬虫综合大作业

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159

    可以用pandas读出之前保存的数据:

    newsdf = pd.read_csv(r'F:duymgzccnews.csv')

    一.把爬取的内容保存取MySQL数据库

    • import pandas as pd
    • import pymysql
    • from sqlalchemy import create_engine
    • conInfo = "mysql+pymysql://user:passwd@host:port/gzccnews?charset=utf8"
    • engine = create_engine(conInfo,encoding='utf-8')
    • df = pd.DataFrame(allnews)
    • df.to_sql(name = ‘news', con = engine, if_exists = 'append', index = False)

    二.爬虫综合大作业

    1. 选择一个热点或者你感兴趣的主题。
    2. 选择爬取的对象与范围。
    3. 了解爬取对象的限制与约束。
    4. 爬取相应内容。
    5. 做数据分析与文本分析。
    6. 形成一篇文章,有说明、技术要点、有数据、有数据分析图形化展示与说明、文本分析图形化展示与说明。
    7. 文章公开发布。

    爬了一下天猫上的Bra购买记录,有了一些羞羞哒的发现...

    Python做了六百万字的歌词分析,告诉你中国Rapper都在唱些啥

    分析了42万字歌词后,终于搞清楚民谣歌手唱什么了

    十二星座的真实面目

    唐朝诗人之间的关系到底是什么样的?

    中国姓氏排行榜

    三.爬虫注意事项

    1.设置合理的爬取间隔,不会给对方运维人员造成压力,也可以防止程序被迫中止。

    • import time
    • import random
    • time.sleep(random.random()*3)

    2.设置合理的user-agent,模拟成真实的浏览器去提取内容。

    1. 首先打开你的浏览器输入:about:version。
    2. 用户代理:
    3. 收集一些比较常用的浏览器的user-agent放到列表里面。
    4. 然后import random,使用随机获取一个user-agent
    5. 定义请求头字典headers={’User-Agen‘:}
    6. 发送request.get时,带上自定义了User-Agen的headers

    3.需要登录

    发送request.get时,带上自定义了Cookie的headers

    headers={’User-Agen‘:  

    'Cookie':    }

    4.使用代理IP

    通过更换IP来达到不断高 效爬取数据的目的。

    headers = {

        "User-Agent": "",

    }

    proxies = {

        "http": " ",

        "https": " ",

    }

    response = requests.get(url, headers=headers, proxies=proxies)

    代码:

    import urllib.request
    from bs4 import BeautifulSoup
    
    
    def getHtml(url):
        """获取url页面"""
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
        req = urllib.request.Request(url,headers=headers)
        req = urllib.request.urlopen(req)
        content = req.read().decode('utf-8')
    
        return content
    
    
    def getComment(url):
        """解析HTML页面"""
        html = getHtml(url)
        soupComment = BeautifulSoup(html, 'html.parser')
    
        comments = soupComment.findAll('span', 'short')
        onePageComments = []
        for comment in comments:
            # print(comment.getText()+'
    ')
            onePageComments.append(comment.getText()+'
    ')
    
        return onePageComments
    
    
    if __name__ == '__main__':
        f = open('最好的我们page10.txt', 'w', encoding='utf-8')
        for page in range(10):  # 豆瓣爬取多页评论需要验证。
            url = 'https://movie.douban.com/subject/26266919/comments?start=' + str(20*page) + '&limit=20&sort=new_score&status=P'
            print('第%s页的评论:' % (page+1))
            print(url + '
    ')
    
            for i in getComment(url):
                f.write(i)
                print(i)
            print('
    ')
    import imageio as imageio
    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    import scipy.misc
    import imageio
    import jieba
    
    text = open("最好的我们page10.txt","rb").read()
    #结巴分词
    wordlist = jieba.cut(text,cut_all=True)
    wl = " ".join(wordlist)
    #print(wl)#输出分词之后的txt
    
    
    #把分词后的txt写入文本文件
    #fenciTxt  = open("fenciHou.txt","w+")
    #fenciTxt.writelines(wl)
    #fenciTxt.close()
    
    
    #设置词云
    wc = WordCloud(background_color = "white", #设置背景颜色
                   mask = imageio.imread('we.jpg'),  #设置背景图片
                   max_words = 2000, #设置最大显示的字数
                   stopwords = ["", "这种", "这样", "还是", "就是", "这个","那么","不是"], #设置停用词
                   font_path = "C:WindowsFontssimkai.ttf",  # 设置为楷体 常规
            #设置中文字体,使得词云可以显示(词云默认字体是“DroidSansMono.ttf字体库”,不支持中文)
                   max_font_size = 60,  #设置字体最大值
                   random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案
        )
    myword = wc.generate(wl)#生成词云
    wc.to_file('result.jpg')

    爬取《最好的我你》电影文件保存如下图

    爬出来的评论,如下图所示:

    评论生成词云如下图所示:

  • 相关阅读:
    request对象
    js基础3
    Andorid Binder进程间通信---总结
    java 获取系统变量(环境变量和设置变量)
    參加项目管理培训的一些体会
    select poll使用
    关注关注工作行列
    jquery——zTree, 完美好用的树插件
    OSI七层模型具体解释
    (原创)优酷androidclient 下载中 bug 解决
  • 原文地址:https://www.cnblogs.com/tianshizhao/p/10838038.html
Copyright © 2011-2022 走看看