爬取**相关信息

        简单说一下,我找的一个网站是kaijiang.500.com/ 下的双色球,数据是从03年第一期一直到现在都有,虽然每次都只能网页上拿一期的数据,但是反爬虫措施不强,可以很快就爬完。

        我是利用了MongoDB和scrapy,这个轮子对初学者还好吧,但是用时间长了也会发现很多不足,然后就可以考虑自己造轮子了。

如果是直接使用request写,更简单~

具体代码如下:

# -*- coding: utf-8 -*-
import scrapy
import re
from caipiao.items import CaipiaoItem




class CaipSpider(scrapy.Spider):
    name = 'caip2'
    allowed_domains = ['kaijiang.500.com/shtml/ssq']


    a = int("1006")
    def start_requests(self):
        for i in range(15):
            for aa in range(1,154):
                if len(self.a) == 4:
                    url = "http://kaijiang.500.com/shtml/ssq/0" + str(self.a) + ".shtml"
                else:
                    url ="http://kaijiang.500.com/shtml/ssq/" + str(self.a) + ".shtml"
                yield scrapy.Request(
                    url=url,
                    callback=self.parse
                )
                self.a += 1
            print("爬取过界")
            a = str(self.a)
            if a.startswith('9'):
                self.a = eval(str(eval(a[0:2]) + 1) + '000')
            else:
                self.a = eval(str(eval(a[0]+1)+'000'))


    def parse(self, response):
        iters = CaipiaoItem()
        # print(response.status)


        try:
            periods = re.findall(r"""class="cfont2"><strong>(.*)</strong></font>""", response.text)
            data = re.match(r""".*?class="ball_red">(.*)""", response.text, re.S).group(1)
        except:
            print("爬取出现异常")
            return


        data = data[0:300]
        data = re.findall(r'\d+', data)
        iters['periods'] = periods[0]
        iters["ball_blue"] = data[6]
        iters['ball_red'] = data[0:6]

        yield iters




想要数据或需要爬取网站可以直接回复联系我