龙空技术网

#Python新征程35#time模块为网络爬虫设置定时爬取

梁陆薇 481

前言:

当前各位老铁们对“scrapy定时爬取”可能比较看重,我们都需要了解一些“scrapy定时爬取”的相关内容。那么小编在网摘上网罗了一些对于“scrapy定时爬取””的相关知识,希望我们能喜欢,咱们快快来学习一下吧!

涉及到了定时器的功能,网页自动化变的更加智能和便捷了,以前从来没想过在自己的手指头下面,可以有这样的代码产生。学无止境,勇敢的接触新事物,努力的学习新事物,总会有心得。

话不多说,继续学习,遨游在知识的海洋中:

1、设置定时器,自动控制代码的运行时间

代码如下:

import timedef cal(i):    return i*ifor i in range(10):    print('当前数及平方结果为:',i,cal(i))    time.sleep(3)    print('过3s后...')

解释如下:

①引入时间模块

②设置程序计算平方数

③设置计算范围,计算0-9的平方

④间隔3s显示时间及结果

(教材中最后一行代码没有缩进,代表的结果是运行完全部的代码之后才会显示最后的代码,如果要达到教材中的打印效果,需要将最后一行代码缩进)

2、设置网页爬取时间间隔,针对频繁更新的网站进行持续性的爬取。参考教材中的内容爬取值值值网优惠商品信息(同样的也可以爬取新浪财经里面随时变动的股票信息,或者那些时时更新的网络数据)

代码如下:

import easySpider,timeurl=';headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36','Cookie':'closed_welcome_banner=1; Hm_lvt_b4f75319df04efc7450e032c416c5d06=1690158138; Hm_lpvt_b4f75319df04efc7450e032c416c5d06=1690158138; _ga_D18RJG737W=GS1.1.1690158138.1.0.1690158138.0.0.0; zhizhizhi_deal_count=159; _ga=GA1.2.1378605414.1690158138; _gid=GA1.2.181409046.1690158138; _gat_gtag_UA_29614150_1=1'}zzSpecial=easySpider.Spider(url=url,headers=headers)while(1):    goodsList=zzSpecial.selenium_scrapy(selector='#main_wrap > div.main_content > div.main_post_list > div:nth-child(1) > div.post_item_main > div.title_box')    sourceList=zzSpecial.selenium_scrapy(selector='#main_wrap > div.main_content > div.main_post_list > div:nth-child(1) > div.post_item_main > div.footer_box.dib_wrap > div.post_misc.dib > div.upper.list > span.right_align > a')    for goods,source in zip(goodsList,sourceList):        print('榜单商品:'+goods,'来源:'+source)    print('2小时后再查看更新信息...')    time.sleep(7200)

其中easySpider已经在前面的分享中详细解析过,通过自定义模块封装了requests,BeautifulSoup,re正则和selenium,可以根据需要随时调取对应的方法来爬取数据。

输入对应的url、浏览器User-Agent和cookie信息后,就可以通过easySpider来爬取数据了。输入对应的selector数据路径,选择打印输出。最终再通过time模块设置2小时自动更新。

熟练之后,操作起来还是比较容易的。

附带之前的easySpider自定义模块如下:

'''自定义模块,将BeautifulSoup,re和selenium组合在一起'''import requests, re, timefrom bs4 import BeautifulSoupfrom selenium import webdriverfrom selenium.webdriver.common.by import Byclass Spider():    def __init__(self, url=None, headers=None):        self.url = url        self.headers=headers    def requests_getHtmlSource(self):        try:            r = requests.get(self.url,headers=self.headers)            r.raise_for_status()            html=r.text        except:            html = "error"        return html    def beautifulsoup_getTarget(self,selector=None,attrs=None):        soup = BeautifulSoup(self.requests_getHtmlSource(),'html.parser')        resultset = soup.select(selector)        res = [item.text for item in resultset]        return res    def re_getTarget(self, pattern=None, flag=None):        targetPattern = re.compile(pattern, flags=flag)        res = targetPattern.findall(self.requests_getHtmlSource)        return res    def selenium_scrapy(self,selector=None):        chrome = webdriver.Chrome()        chrome.implicitly_wait(3)        chrome.get(self.url)        target_elements = chrome.find_elements(By.CSS_SELECTOR, selector)        res = [item.text for item in target_elements]        return res

#加油!

#一点一滴的努力,未来都会有回报。

#岁月静好,不去羡慕旁人,只做好自己,花朵总会绽放。

#以上学习感悟来自于《网络爬虫进化论:从Excel爬虫到Python爬虫》(中国水利水电出版社2021年出版)

标签: #scrapy定时爬取