コード例 #1
0
    def getEveryFenghuang(self):
        dbhelper = DB()
        dateurl = fenghuangDateUrls()
        oneContent = fenghuangPageContent()
        print("共提取到新闻url的数量有")
        now_date = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")  # 昨天日期
        print(now_date)

        # print(dateurl.getOneDayNewUrl("2018-07-03"))
        #1.页面新闻url写入数据库
        todayNewUrl = dateurl.getUrlLists(now_date)   #1.这个就是当天的
        urlNumer = len(todayNewUrl)

        todayNewUrl = dbhelper.__query__("select url from tengxun where urlState='False' and fromWhere='fenghuang'")  #只要数据库中未填补内容的url
        print(type(todayNewUrl))
        print(len(todayNewUrl))
        # for dic in todayNewUrl:
        #     dic['url']

        print("")

        # 这儿才是把东西提取出来
        count = 1                                                             #计数,每100个就休息1分钟
        print(todayNewUrl)
        flagNumber = 1
        mixNumber = 0
        for dic in todayNewUrl:
            newUrl = dic['url'] #2.把写入数据库的这几个新闻url的内容提取出来
            if newUrl.find("pl.ifeng.com")!=-1:
                title, Hcontent, Tcontent, Acontent = oneContent.getPlContent(newUrl)
                if (title != "凤凰没有找到标题" and title != None and Hcontent != ""):  # 有内容的时候就更新这条数据
                    dbhelper.updateContent(newUrl, title, Hcontent, Tcontent, Acontent)

                    print("正在生成新混合新闻。。。")  # 3. 然后是把页面页写入数据库,再然后是随机生成相同数量的
                    mixNews = MixNews()
                    if mixNews.__startToMix__() != True:  # 调用一次就执行一次,可以修改返回的状态
                        print("生成失败,已经没有刚填满的未用过的文章了")
                        print(newUrl)
                        dbhelper.deleteUrl(newUrl)  # 如何这个内容为空也要删除,(可能前面一个步骤更新的时候发现相同的标题,所以插入不了),
                    else:
                        mixNumber+=1    #成功就生成一个累加
                else:
                    print("更新失败,标题提取失败,为空")
                    dbhelper.deleteUrl(newUrl)  # 按url把这条记录删除掉咯
            else:    #这个就是默认的那个新闻news.ifeng.com
                title, Hcontent, Tcontent, Acontent =oneContent.getNewsContent(newUrl)
                if (title != "凤凰没有找到标题" and title != None and Hcontent != ""):  # 有内容的时候就更新这条数据
                    dbhelper.updateContent(newUrl, title, Hcontent, Tcontent, Acontent)

                    print("正在生成新混合新闻。。。")  # 3. 然后是把页面页写入数据库,再然后是随机生成相同数量的
                    mixNews = MixNews()
                    if mixNews.__startToMix__() != True:  # 调用一次就执行一次,可以修改返回的状态
                        print("生成失败,已经没有刚填满的未用过的文章了")
                        print(newUrl)
                        dbhelper.deleteUrl(newUrl)  # 如何这个内容为空也要删除,(可能前面一个步骤更新的时候发现相同的标题,所以插入不了),
                    else:
                        mixNumber+=1    #成功就生成一个累加
                else:
                    print("更新失败,标题提取失败,为空")
                    dbhelper.deleteUrl(newUrl)  # 按url把这条记录删除掉咯
        print("目前生成了 共有那么多个混合的新闻  "+str(mixNumber))   #普遍存在
コード例 #2
0
    def getEveryTengxun(self):  #这个其实就是封装在对象里面的一个主函数而已
        #开始之前,先检查有没有序列化的文件在这儿
        dbhelper = DB()
        # todo 提取页面失败得这几个可以研究一下  是tuple   网址不同,(网址不同,发布时间的不同,)
        # {'type': 2, 'value': 'http:\\/\\/inews.gtimg.com\\/newsapp_match\\/0\\/5261922136\\/0'}
        # 纪念品牌20周年 smart Forease官图发布
        # 打开页面提取失败,可能是页面为404腾讯,删除这条url
        # 删除成功哈 http:////auto.qq.com//a//20181005//001598.htm
        # http:////news.qq.com//a//20181005//002590.htm
        # qqnews
        # 2
        pcontent = pageContent()
        # print("共提取到新闻url的数量有")
        # now_date = time.strftime('%Y-%m-%d', time.localtime(time.time()))  # 获取当前日期,每次执行操作的时候都这样
        now_date = (date.today() + timedelta(days=-1)).strftime(
            "%Y-%m-%d")  # 昨天日期
        # time.localtime(time.time())  #暂时是这样,以后的话
        print("昨天的日期是" + now_date + "现在正在爬取昨天的新闻!d😀")
        #1.获取一天的新url

        #爬取昨晚的
        dateUrl = DateUrl(
        )  # 2018-09-27 日编辑  todo 这儿区分开来,不用通过这儿返回的,另外那儿只需要把那些urlState="False"的提取出来就可以
        dateUrl.pageUrlMain(now_date)  #获得今天的,并且写入数据库  todo 待会要把这儿的这个调回去

        todayNewUrl = dbhelper.__query__(
            "select url from tengxun where urlState='False' and fromWhere='tengxun'"
        )  #只要数据库中取出需要读取的url
        # print(type(todayNewUrl))
        print(len(todayNewUrl))
        print("")
        # 这儿才是把东西提取出来
        count = 1  #计数,每100个就休息1分钟
        for dic in todayNewUrl:  #这儿还是需要把
            url = dic['url']  #2.把写入数据库的这几个新闻url的内容提取出来
            if count % 200 == 0:  #突然的中断应该是因为这边连接不上那儿,所以应该问题不大
                time.sleep(60 * 2)  #每两百个休息4分钟好了
            count += 1

            #这儿的url是未转换成xw。电脑原版页面的url,所以,存的是这种url
            #还是得把这个url打开,才知道是否是title已经存在的

            title, Hcontent, Tcontent, Acontent = pcontent.getPageContentMain(
                url)  #这儿漏了更新到url中去  ,自动转换成xw的然后再下载
            time.sleep(1)
            # print(title, Hcontent, Tcontent, Acontent)
            if (title != "腾讯没找到标题" and title != None
                    and Hcontent != ""):  #有内容的时候就更新这条数据
                # print("要更新的url是 "+url)
                resultState = dbhelper.updateContent(url, title, Hcontent,
                                                     Tcontent,
                                                     Acontent)  #要删除的是更新失败的那个
                if resultState == False:  #更新成功
                    print("更新失败,正在删除这个url不同,但是标题相同的新闻")
                    print(url)
                    dbhelper.deleteUrl(url)  # 按url把这条记录删除掉咯,生成失败也不需要删除这个拉,
                    print()
                else:
                    # print("正在生成新混合新闻。。。")  # 3. 然后是把页面页写入数据库,再然后是随机生成相同数量的
                    mixNews = MixNews()
                    if mixNews.__startToMix__() != True:  # 调用一次就执行一次,可以修改返回的状态
                        print("生成失败,已经没有刚填满的未用过的文章了")
                        print(url)
                        dbhelper.deleteUrl(
                            url)  # 如何这个内容为空也要删除,(可能前面一个步骤更新的时候发现相同的标题,所以插入不了),
                        # print()
            else:
                print("打开页面提取失败,可能是页面为404腾讯,删除这条url")  #为空的话,那么就删除这条把
                dbhelper.deleteUrl(url)  #按url把这条记录删除掉咯
コード例 #3
0
    def getEveryTengxun(self):
        dbhelper = DB()  #处理数据库用
        pcontent = pageContent()  #处理页面详情用

        now_date = (date.today() + timedelta(days=-1)).strftime(
            "%Y-%m-%d")  # 昨天日期
        print("昨天的日期是" + now_date + "现在正在爬取昨天的新闻!d😀")  #应该是获得昨天才对

        #------------------------------------------------爬取昨晚的-----------------------------------------------------
        print("开始执行写入所有的url")
        dateUrl = DateUrl(
        )  # 2018-09-27 日编辑  todo 这儿区分开来,不用通过这儿返回的,另外那儿只需要把那些urlState="False"的提取出来就可以
        dateUrl.pageUrlMain(now_date)  #获得今天的,并且写入数据库  ,所以这儿返回什么都没关系,不需要返回都可以的

        #-------------------------------------------------打开内容------------------------------------------------------
        print("开始执行读取页面")
        todayNewUrl = dbhelper.__query__(
            "select url from tengxun where urlState='False' and fromWhere='tengxun'"
        )
        print("读取出 " + str(len(todayNewUrl)) + " 条")
        print("")

        #每100个就休息1分钟,慢是有原因的#每两百个休息2分钟好了
        count = 1
        delCount = 0
        for dic in todayNewUrl:
            url = dic['url']
            if count % 200 == 0:
                time.sleep(60 * 2)
                print("休息2分钟")
            count += 1

            # 爬取的当前时间写入进去。
            title, Hcontent, Tcontent, Acontent = pcontent.getPageContentMain(
                url, now_date)  #这儿漏了更新到url中去  ,自动转换成xw的然后再下载
            time.sleep(1)

            if (title != "腾讯没找到标题" and title != None
                    and Hcontent != ""):  #有内容的时候就更新这条数据

                # todo 这儿加上生成云图保存本地,并且把路径合并成src生成字符串合并到Acontent就可以了。
                # 生成img标签
                News_Id = url.replace("$", "").replace("/", "").replace(
                    ":", "_").replace(".", "_")

                imgTag = "<img src=" + Gen_WordCloud(
                    Newsid=News_Id,
                    text=Acontent) + " />"  #不能使用单引号,否则会让sql语句中断开的
                print(imgTag)
                Acontent = imgTag + Acontent
                print("更新的结果有")
                print(title)
                print(Tcontent)
                print(url)
                print(Acontent)
                print("显示完毕")

                resultState = dbhelper.updateContent(url, title, Hcontent,
                                                     Tcontent,
                                                     Acontent)  #要删除的是更新失败的那个
                if resultState == False:  #更新成功
                    print("更新失败,正在删除这个url不同,但是标题相同的新闻")
                    print(url)
                    dbhelper.deleteUrl(url)  #删除提取失败的那些
                    print()
                else:
                    pass  #更新成功什么都不干
            else:
                delCount += 1
                print("打开页面提取失败,可能是页面为404腾讯,删除这条url")  #为空的话,那么就删除这条把
                dbhelper.deleteUrl(url)  #按url把这条记录删除掉咯
        dbhelper.classifyDB()  # 执行完了后就进行分类到django的数据库

        comment = CommentCrawl()
        comment = CommentCrawl()
        comment.getCommentMain()  #执行了爬取评论并且分类到django数据库
        print("共删除了  " + str(delCount))
        print("原来有  " + str(len(todayNewUrl)) + " 条")
        print("今天爬取完毕,蟹蟹使用")
コード例 #4
0
    def getEveryDayWangyi(self):
        dbhelper = DB()
        dateurl = DateUrl()
        oneContent = wangyiPageContent()
        print("共提取到新闻url的数量有")
        now_date = (date.today() + timedelta(days=-1)).strftime(
            "%Y-%m-%d")  # 昨天日期
        print(now_date)
        # print(dateurl.getOneDayNewUrl("2018-07-03"))
        #1.页面新闻url写入数据库

        dateurl.getRollUrlList(
            now_date)  # 1.这个就是当天的,和凤凰一样,老样子啊,获得了链接后直接可以写入数据库中去了

        todayNewUrl = dbhelper.__query__(
            "select url from tengxun where urlState='False' and fromWhere='wangyi';"
        )  # 只要数据库中取出需要读取的url
        # print(type(todayNewUrl))
        print(len(todayNewUrl))  #这个才是打开来的东西

        urlNumer = len(todayNewUrl)
        print("正在打开网易的新闻的东西")
        print(todayNewUrl)

        # print("正在打开网易的新闻的东西")
        # print(todayNewUrl)

        # for newUrl in todayNewUrl:  # 2.然后把内容段落写入数据库
        #     title, Hcontent, Tcontent, Acontent = oneContent.getPageContent(newUrl)
        #     if (title != "网易没找到标题" and title != None and Hcontent != ""):  # 有内容的时候就更新这条数据
        #         dbhelper.updateContent(newUrl, title, Hcontent, Tcontent, Acontent)
        #
        #         print("正在生成新混合新闻。。。")  # 3. 然后是把页面页写入数据库,再然后是随机生成相同数量的
        #         mixNews = MixNews()
        #         mixNews.__startToMix__()  # 调用一次就执行一次,可以修改返回的状态
        #
        #     else:
        #         print("更新失败,标题提取失败,为空")
        count = 1  #计数,每100个就休息1分钟
        for dic in todayNewUrl:
            url = dic['url']  #2.把写入数据库的这几个新闻url的内容提取出来
            if count % 200 == 0:  #突然的中断应该是因为这边连接不上那儿,所以应该问题不大,每两百条休息一分钟
                time.sleep(60)
            count += 1

            #这儿的url是未转换成xw。电脑原版页面的url,所以,存的是这种url
            title, Hcontent, Tcontent, Acontent = oneContent.getNewsContent(
                url)  #这儿漏了更新到url中去  ,自动转换成xw的然后再下载
            time.sleep(1)
            # print(title, Hcontent, Tcontent, Acontent)
            if (title != "腾讯没找到标题" and title != None
                    and Hcontent != ""):  #有内容的时候就更新这条数据
                # print("要更新的url是 "+url)
                resultState = dbhelper.updateContent(url, title, Hcontent,
                                                     Tcontent,
                                                     Acontent)  #要删除的是更新失败的那个
                if resultState == False:  #更新成功
                    print("更新失败,正在删除这个重复的url")
                    print(url)
                    # dbhelper.deleteUrl(url)  # 按url把这条记录删除掉咯,生成失败也不需要删除这个拉,
                    print()
                else:
                    # print("正在生成新混合新闻。。。")  # 3. 然后是把页面页写入数据库,再然后是随机生成相同数量的
                    mixNews = MixNews()
                    if mixNews.__startToMix__() != True:  # 调用一次就执行一次,可以修改返回的状态
                        print("生成失败,已经没有刚填满的未用过的文章了")
                        print(url)
                        dbhelper.deleteUrl(
                            url)  # 如何这个内容为空也要删除,(可能前面一个步骤更新的时候发现相同的标题,所以插入不了),
                        # print()
                    else:
                        print(True)
            else:
                print("打开页面提取失败,可能是页面为404网易,正在删除这条url " + url)  #为空的话,那么就删除这条把
                dbhelper.deleteUrl(
                    url)  #按url把这条记录删除掉咯 todo don't delete it first