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)) #普遍存在
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把这条记录删除掉咯
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("今天爬取完毕,蟹蟹使用")
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