自己写的爬虫代码,能否实现24小时自动抓取。每小时记录一次?

李复唐2 发布于 2018/02/24 17:22
阅读 1K+
收藏 2

大家帮看一眼,能否实现每小时抓取一次

import requests
from bs4 import BeautifulSoup
import datetime  
import time 
def doSth():
    list_1=[]
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36','Upgrade-Insecure-Requests':'1','Referer':'https://www.coincola.com/buy/ETH?country_code=CN',}
    req = requests.get('https://www.coincola.com/buy/BTC?country_code=CN',headers=headers)
    soup = BeautifulSoup(req.text,'html.parser')
    list_1.append(soup.select('.td-price')[2].text)

    req = requests.get('https://www.coincola.com/buy/ETH?country_code=CN',headers=headers)
    soup = BeautifulSoup(req.text,'html.parser')
    list_1.append(soup.select('.td-price')[2].text)

    req = requests.get('https://www.coincola.com/buy/BCH?country_code=CN',headers=headers)
    soup = BeautifulSoup(req.text,'html.parser')
    list_1.append(soup.select('.td-price')[2].text)

    req = requests.get('https://www.coincola.com/buy/LTC?country_code=CN',headers=headers)
    soup = BeautifulSoup(req.text,'html.parser')
    list_1.append(soup.select('.td-price')[2].text)

    with open('C:/Python36/新建.txt','a') as a:
        a.write("\n")
        for i in list_1:
            a.write(i)  
        
def main(m=0):  
    while True:  
        now = datetime.datetime.now()  
        # print(now.hour, now.minute)  
        if now.minute == m:  
            break  
        # 每隔60秒检测一次  
        time.sleep(60)  
    doSth()  
  
main()  

主要看下,这部分有没有毛病

加载中
0
凤歌孔丘
凤歌孔丘
逻辑上没毛病,但这样写法感觉怪怪的,建议用apscheduler管理定时任务,
李复唐2
李复唐2
谢谢
1
期货大佬
李复唐2
李复唐2
谢谢,老铁
1
cuberl
cuberl

crontab或者是类似python-crontab这种库吧

李复唐2
李复唐2
thanks
0
wangye88
wangye88

楼主是用python写的,不过还是想推荐一个java的定时任务插件,来自JFinal的cron4J插件。

李复唐2
李复唐2
感谢
0
wei2011
wei2011

这段代码逻辑应该没问题,不过用个变量记一下上次抓取时间,每次执行用当前时间减去上次抓取时间取时间差,通过时间差来比较,这样应该更可靠

李复唐2
李复唐2
谢谢了
0
王囧
王囧

APScheduler

返回顶部
顶部