简单说一下,我找的一个网站是kaijiang.500.com/ 下的双色球,数据是从03年第一期一直到现在都有,虽然每次都只能网页上拿一期的数据,但是反爬虫措施不强,可以很快就爬完。
我是利用了MongoDB和scrapy,这个轮子对初学者还好吧,但是用时间长了也会发现很多不足,然后就可以考虑自己造轮子了。
如果是直接使用request写,更简单~
具体代码如下:
# -*- coding: utf-8 -*-import scrapyimport refrom caipiao.items import CaipiaoItemclass 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
想要数据或需要爬取网站可以直接回复联系我