php如何抓取网页数据库(5.PHP倒序输出所有日志方法(一)输出方法 )

优采云 发布时间: 2022-03-27 06:24

  php如何抓取网页数据库(5.PHP倒序输出所有日志方法(一)输出方法

)

  所以,我们需要引入时间函数,然后写一个函数来获取当前时间

  import time

#获取当前时间

def getCurrentTime(self):

return time.strftime('[%Y-%m-%d %H:%M:%S]',time.localtime(time.time()))

#获取当前时间

def getCurrentDate(self):

return time.strftime('%Y-%m-%d',time.localtime(time.time()))

  以上是分别获取具体时间和日期的函数。输出时,我们可以在输出语句前面调用这个函数。

  然后我们需要将缓冲区设置输出到日志中,并在程序顶部添加这两句。

  ​f_handler=open('out.log', 'w')

sys.stdout=f_handler

  这样,打印语句的所有输出都会保存到 out.log 文件中。

  ​

前言

最近发现MySQL服务隔三差五就会挂掉,导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL,在做爬虫存取一些资料的时候也是基于MySQL,数据量一大了,MySQL它就有点受不了了,时不时会崩掉,虽然我自己有网站监控和邮件通知,但是好多时候还是需要我来手动连接我的服务器重新启动一下我的MySQL,这样简直太不友好了,所以,我就觉定自己写个脚本,定时监控它,如果发现它挂掉了就重启它。

好了,闲言碎语不多讲,开始我们的配置之旅。

运行环境:UbuntuLinux14.04

编写Shell脚本

首先,我们要编写一个shell脚本,脚本主要执行的逻辑如下:

显示mysqld进程状态,如果判断进程未在运行,那么输出日志到文件,然后启动mysql服务,如果进程在运行,那么不执行任何操作,可以选择性输出监测结果。

可能大家对于shell脚本比较陌生,在这里推荐官方的shell脚本文档来参考一下

UbuntuShell编程基础

shell脚本的后缀为sh,在任何位置新建一个脚本文件,我选择在/etc/mysql目录下新建一个listen.sh文件。

执行如下命令:

  ​

前言

最近发现MySQL服务隔三差五就会挂掉,导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL,在做爬虫存取一些资料的时候也是基于MySQL,数据量一大了,MySQL它就有点受不了了,时不时会崩掉,虽然我自己有网站监控和邮件通知,但是好多时候还是需要我来手动连接我的服务器重新启动一下我的MySQL,这样简直太不友好了,所以,我就觉定自己写个脚本,定时监控它,如果发现它挂掉了就重启它。

好了,闲言碎语不多讲,开始我们的配置之旅。

运行环境:UbuntuLinux14.04

编写Shell脚本

首先,我们要编写一个shell脚本,脚本主要执行的逻辑如下:

显示mysqld进程状态,如果判断进程未在运行,那么输出日志到文件,然后启动mysql服务,如果进程在运行,那么不执行任何操作,可以选择性输出监测结果。

可能大家对于shell脚本比较陌生,在这里推荐官方的shell脚本文档来参考一下

UbuntuShell编程基础

shell脚本的后缀为sh,在任何位置新建一个脚本文件,我选择在/etc/mysql目录下新建一个listen.sh文件。

执行如下命令:

  2.页码保存

  爬虫在爬取过程中可能会出现各种错误,从而导致爬虫中断。如果我们重新运行爬虫,会导致爬虫从头开始运行,这显然是不合理的。因此,我们需要保存当前抓取的页面,例如可以保存在文本中。如果爬虫被中断,重新运行爬虫,读取文本文件的内容,然后进行爬虫。

  可以稍微参考一下函数的实现:

  ​

#主函数

def main(self):

f_handler=open('out.log', 'w')

sys.stdout=f_handler

page = open('page.txt', 'r')

content = page.readline()

start_page = int(content.strip()) - 1

page.close()

print self.getCurrentTime(),"开始页码",start_page

print self.getCurrentTime(),"爬虫正在启动,开始爬取爱问知识人问题"

self.total_num = self.getTotalPageNum()

print self.getCurrentTime(),"获取到目录页面个数",self.total_num,"个"

if not start_page:

start_page = self.total_num

for x in range(1,start_page):

print self.getCurrentTime(),"正在抓取第",start_page-x+1,"个页面"

try:

self.getQuestions(start_page-x+1)

except urllib2.URLError, e:

if hasattr(e, "reason"):

print self.getCurrentTime(),"某总页面内抓取或提取失败,错误原因", e.reason

except Exception,e:

print self.getCurrentTime(),"某总页面内抓取或提取失败,错误原因:",e

if start_page-x+1 < start_page:

f=open('page.txt','w')

f.write(str(start_page-x+1))

print self.getCurrentTime(),"写入新页码",start_page-x+1

f.close()

  这样,无论我们的爬虫在中间遇到什么错误,妈妈都不会担心。

  3.页面处理

  在页面处理的过程中,我们可能会遇到各种奇怪的HTML代码。和上一节一样,我们可以使用页面处理类。

<p>​

import re

#处理页面标签类

class Tool:

#将超链接广告剔除

removeADLink = re.compile('

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线