爬取**相关信息
简单说一下,我找的一个网站是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
想要数据或需要爬取网站可以直接回复联系我