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

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

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

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

    import sqlite3
    with sqlite3.connect('gzccnewsdb.sqlite') as db:
    newsdf.to_sql('gzccnews',con = db)

    with sqlite3.connect('gzccnewsdb.sqlite') as db:
    df2 = pd.read_sql_query('SELECT * FROM gzccnews',con=db)

    保存到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. 文章公开发布。

    参考:


    32个Python爬虫项目


    都是谁在反对996?


    Python和Java薪资最高,C#最低!


    给《流浪地球》评1星的都是什么心态?


    《都挺好》弹幕数据,比剧情还精彩?


    爬了自己的微信好友,原来他们是这样的人……

    春节人口迁徙大数据报告!

    七夕前消费趋势数据

    爬了一下天猫上的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)

    四、第11周课堂检查

    正文:

    这次爬去的对象是豆瓣中电影《何以家为》的前十页评论,并用词云显示。《何以家为》是法国的一部剧情片,获得当年的奥斯卡金像奖,是一部难得的佳作。

    目录:

    爬取评论:news.py  ; 生成词语:abc.py  ;词云背景图:jia.jpg  ;生成的词云图片: result.jpg

    1.获取url

    这些短评的url为:

    https://movie.douban.com/subject/30170448/comments?start=40&limit=20&sort=new_score&status=P

    https://movie.douban.com/subject/30170448/comments?start=60&limit=20&sort=new_score&status=P

    https://movie.douban.com/subject/30170448/comments?start=80&limit=20&sort=new_score&status=P

    可以发现每一页评论的url只是变化了start= 后面的数字,可以遍历这些url。

    2.爬取评论

    爬去前十页评论,生成文本文件,并保存在文本文件中。

    代码:

    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/30170448/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('
    ')

    3.生成词云图

    mport matplotlib.pyplot as plt
    from wordcloud import WordCloud
    from scipy.misc import imread
    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 = imread('jia.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')

                                 

  • 相关阅读:
    符号解析
    编译器与链接器的功能
    hook的本质就是在本原可执行文件中加东西
    Mac-O文件加载的全过程(一)
    系统在执行可执行文件几个过程
    动态库连接器–动态库链接信息(Mach-O文件格式和程序从加载到执行过程)
    load 调用的顺序
    iPhone Mach-O文件格式与代码签名
    Redis正确使用的十个技巧
    redis slowlog
  • 原文地址:https://www.cnblogs.com/JunhanLin/p/10837882.html
Copyright © 2011-2022 走看看