60行python代码爬取彩票网站历年数据成成csv文件导入数据库

我们要爬取得网站是500w彩票网,因为他页面简单,容易分析。好,接下来就开始准备工作

这就是我们要爬取得数据,可以指定期号,我准备爬14年到19年所有的

首先准备导入的库

import requests,os,csv,time
from selenium import webdriver
from lxml import etree

我们还是用比较实用的requests库来爬取数据,另外需要selenium来模拟浏览器工作,time来sleep,模拟人操作,再就是xpath工具来抽取页面信息内容,当然也可以使用美丽汤

我习惯写个类方法来运行爬虫文件

class Balls(object):
    numlis=[]
    def __init__(self):
        self.start_url='http://datachart.500.com/ssq/history/history.shtml'
        option=webdriver.ChromeOptions()
        # option.binary_location=r'chromedriver.exe'
        option.add_argument('--headless')
        option.add_argument('--no-sandbox')
        self.web=webdriver.Chrome(chrome_options=option)

    def run_spider(self):
        self.web.get(self.start_url)
        self.web.find_element_by_id('link99')
        start=self.web.find_element_by_id('start')
        end=self.web.find_element_by_id('end')
        start.clear()
        end.clear()#先清除
        time.sleep(1.5)
        start.send_keys('14001')
        end.send_keys('19016')
        sub=self.web.find_element_by_xpath('//*[@id="container"]/div/table/tbody/tr[1]/td/div/div[1]/div/table/tbody/tr/td[2]/img')
        time.sleep(0.8)
        sub.click()
        # print(self.web.page_source)
        return self.web.page_source

    def get_spider_source(self):
        sourse=self.run_spider()
        html=etree.HTML(sourse)
        for i in range(1,783):
            stage_num=html.xpath('//tbody[@id="tdata"]/tr[{}]/td[1]/text()'.format(i))
            red_num1 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[2]/text()'.format(i))
            red_num2 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[3]/text()'.format(i))
            red_num3 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[4]/text()'.format(i))
            red_num4 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[5]/text()'.format(i))
            red_num5 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[6]/text()'.format(i))
            red_num6 = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[7]/text()'.format(i))
            blue_num = html.xpath('//tbody[@id="tdata"]/tr[{}]/td[8]/text()'.format(i))
            # print(stage_num)
            self.numlis.append([783-i,stage_num[0],red_num1[0],red_num2[0],red_num3[0],red_num4[0],red_num5[0],red_num6[0],blue_num[0]])

        for data in list(reversed(self.numlis)):
            self.write_to_csv('file/ball.csv',data)

    def write_to_csv(self,pathfile,data):
        if not os.path.exists(pathfile):
            with open(pathfile,'w') as f:
                pass
        f = open(pathfile, 'a', newline='')
        wr = csv.writer(f, dialect='excel')
        wr.writerow(data)

b=Balls()
b.get_spider_source()

执行完会发现文件乖乖躺在文件夹里

数据库同步也导入了,

谢谢使用!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值