scrapy学习笔记(五)

面对实际问题中的问题,用智慧解决。

这篇讲一个python调用scrapy执行爬虫,并用正则表达式方法提取JS信息的实际任务。

A任务:定时爬取panda.tv的某个房间数据并输出文本出结果

分析网页目标:要提取的num信息存在于JS中因此无法用xpath提取到有效内容,这里用正则表达式完成任务

省去之前熟悉的建工程步骤

首先编写爬虫将网页整篇保存下来:

import scrapy

class PandaSpiderSpider(scrapy.Spider):

    name = 'panda_spider'

    start_urls = ['https://www.panda.tv/555888']

    def parse(self, response):

        print(response)

        f = open("out.txt","w")

        print >> f, "%s" % (response.body)

        f.close()

然后写python运行scarpy程序并从out.txt中正则提取信息:

import time

import os

import re


totaltime = 0

for deltaT in range(10): #重复爬十次

    os.system("scrapy crawl panda_spider")


    # 提取单个网页文件字段信息,保存到out.txt中

    f = open('out.txt','r')

    s=f.read()

    f.close()

    w=re.search('\'roominfo\'.+',s).group()  #提取包含信息的整行

    x=re.search('"person_num":"\d+","classification"',w).group() #提取包含信息的字段

    x=re.search('\d+',x).group() #提取所需信息

    print(x) #x就是我们需要提取的信息


    time.sleep(30)


    #将时间-数据写入文件data.txt

    g = open('data.txt','a+')

    print >> g,"%s %s" % (totaltime,x)

    g.close()

    totaltime += 30


print('finished!')

运行py程序即可开始爬取,这里重点学习python正则表达式的用法。

注意写文件的参数'a+'表示追加,如没有文件则新建。

该例子中爬虫间隔时间为30秒,一共爬10次。

你可能感兴趣的:(scrapy学习笔记(五))