爬取竞彩足球的数据信息

scrapy startproject ZuCai

会自动生成2个zucai文件夹

cd ZuCai

cd ZuCai

进入最下面的ZuCai文件夹

scrapy genspider zucai  trade.500.com/jczq/

开始分析  https://trade.500.com/jczq/ 这个页面

进入页面后,点击F12查看网页代码。通过查找,发现所有的比赛结果全部在 <table class="bet-tb bet-tb-dg">...</table>中,然后继续往下看

每一行都在一个tr中。这里我们就可以定位到tr,然后获取到所有的tr的值,然后在tr中循环找我们需要的信息

首先在 item.py中确定我们需要爬取的信息

class ZucaiItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

  League = scrapy.Field() ---赛事

  Time = scrapy.Field()--时间

  Home_team = scrapy.Field()--主队

  Away_team = scrapy.Field()--客队

  Result = scrapy.Field()--赛果

  Win = scrapy.Field()--赢的赔率

  Level = scrapy.Field()--平局赔率

  Negative = scrapy.Field()--负的赔率

  pass

然后写zucai.py

def parse(self, response):

datas = response.xpath(‘//div[@class="bet-main bet-main-dg"]/table/tbody/tr‘)

for data in datas:

  item = ZucaiItem()

  item[‘League‘] = data.xpath(‘.//td[@class="td td-evt"]/a/text()‘).extract()[0]

  item[‘Time‘] = data.xpath(‘.//td[@class="td td-endtime"]/text()‘).extract()[0]

  item[‘Home_team‘] = data.xpath(‘.//span[@class="team-l"]/a/text()‘).extract()[0]

  item[‘Result‘] = data.xpath(‘.//i[@class="team-vs team-bf"]/a/text()‘).extract()[0]

  item[‘Away_team‘] = data.xpath(‘.//span[@class="team-r"]/a/text()‘).extract()[0]

  item[‘Win‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[1]/span/text()‘).extract()[0]

  item[‘Level‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[2]/span/text()‘).extract()[0]

  item[‘Negative‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[3]/span/text()‘).extract()[0]

  yield item

这里执行的时候有时会报超出数组范围的错误,则需要将对应的extract()[0]替换成extract_first()。后面再说这两者的区别

这里需要将获取的数据存入MySQL数据库

首先得在本地装一个MySQL数据库,然后建一个库和一个表。表的列和item.py中的相同。以便爬取的数据能顺利存入其中。

然后在pepelines.py中写存入数据库的代码

import pymysql

import logging

class ZucaiPipeline(object):

  def __init__(self):

    self.connect = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘123456‘, db=‘douban‘, port=3306)

    self.cursor = self.connect.cursor()

  def process_item(self, item, spider):

    try:

      sql = ‘insert into jcai values ("{}","{}","{}","{}","{}","{}","{}","{}")‘.format(item[‘League‘], item[‘Time‘], item[‘Home_team‘], item[‘Result‘], item[‘Away_team‘], item[‘Win‘], item[‘Level‘], item[‘Negative‘])

      self.cursor.execute(sql)

      self.connect.commit()

    except Exception as error:

    logging.log(error)

    return item

  def close_db(self):

  self.cursor.close()

  self.connect.close()

最后 修改setting.py中的信息

USER_AGENT = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36‘

# Obey robots.txt rules

ROBOTSTXT_OBEY = False

ITEM_PIPELINES = {

‘ZuCai.pipelines.ZucaiPipeline‘: 300,

}

修改这三处就可以了。

import scrapy

from ZuCai.items import ZucaiItem

class ZucaiSpider(scrapy.Spider):

  name = ‘zucai‘

  allowed_domains = [‘trade.500.com/jczq/‘]

  start_urls = [‘https://trade.500.com/jczq/?date=2019-05-13‘]

def parse(self, response):

  datas = response.xpath(‘//div[@class="bet-main bet-main-dg"]/table/tbody/tr‘)

  for data in datas:

    item = ZucaiItem()

    item[‘League‘] = data.xpath(‘.//td[@class="td td-evt"]/a/text()‘).extract()[0]

    item[‘Time‘] = data.xpath(‘.//td[@class="td td-endtime"]/text()‘).extract()[0]

    item[‘Home_team‘] = data.xpath(‘.//span[@class="team-l"]/a/text()‘).extract()[0]

    item[‘Result‘] = data.xpath(‘.//i[@class="team-vs team-bf"]/a/text()‘).extract()[0]

    item[‘Away_team‘] = data.xpath(‘.//span[@class="team-r"]/a/text()‘).extract()[0]

    item[‘Win‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[1]/span/text()‘).extract()[0]

    item[‘Level‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[2]/span/text()‘).extract()[0]

    item[‘Negative‘] = data.xpath(‘.//div[@class="betbtn-row itm-rangB1"]/p[3]/span/text()‘).extract()[0]

    yield item

至此爬取一个页面的赛果信息就完成了。

然后  cd zucai

scrapy crawl zucai 执行。就会发现数据库对应的表中有数据。

原文地址:https://www.cnblogs.com/zc-cong/p/10861440.html

时间: 2024-10-31 13:50:29

爬取竞彩足球的数据信息的相关文章

python爬取ajax动态生成的数据 以抓取淘宝评论为例子

在学习python的时候,一定会遇到网站内容是通过ajax动态请求.异步刷新生成的json数据的情况,并且通过python使用之前爬取静态网页内容的方式是不可以实现的,所以这篇文章将要讲述如果在python中爬取ajax动态生成的数据. 至于读取静态网页内容的方式,有兴趣的可以查看博客内容. 这里我们以爬取淘宝评论为例子讲解一下如何去做到的. 这里主要分为了四步: 一 获取淘宝评论时,ajax请求链接(url) 二 获取该ajax请求返回的json数据 三 使用python解析json数据 四

爬取拉钩全站的职位信息

爬虫学习到今天也告一段落了,利用一个项目把自己这几个月的所学的知识来做一次总结 项目所需要的知识比较全面,很适合练手, 一 程序目的 爬取拉钩全站的职位信息存入mysql和mongodb中 二 所用到的方法 一 利用selenium登录拉钩取得cookies 二 利用redis保存selenium登录拉钩取得cookies信息,维护一个cookie池 三 爬取西刺等免费IP网站,并用redis维护一个IP池 四 利用flask把cookies和ip分别映射到网页中,用requsets得到. 五

02. 爬取get请求的页面数据

目录 02. 爬取get请求的页面数据 一.urllib库 二.由易到难的爬虫程序: 02. 爬取get请求的页面数据 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*

03.爬取get请求的页面数据

urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4 import urllib.request 5 import urllib.parse

python网络爬虫第三弹(&lt;爬取get请求的页面数据&gt;)

一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是通过代码模拟浏览器发送请求,其常被用到的子模块在 python3中的为urllib.request 和 urllib.parse,在python2中的是 urllib 和 urllib2 二.由易到难首页面所有的数据值 1.爬取百度首页所有的数据值 import urllib.request import urllib.parse url = 'http://www.baidu.com' # 通过 URLopen

爬取豆瓣网图书TOP250的信息

爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.douban.com/top250 注意:使用正则表达式时,不要在Elements选项卡中直接查看源代码,因为那的源码可能经过Javascript渲染而与原始请求不同,而是需要从Network选项卡中查看源码. import re import json import time import request

爬虫学习 Python网络爬虫第三弹《爬取get请求的页面数据》

爬虫学习 Python网络爬虫第三弹<爬取get请求的页面数据> 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4

python 爬取天猫美的评论数据

笔者最近迷上了数据挖掘和机器学习,要做数据分析首先得有数据才行.对于我等平民来说,最廉价的获取数据的方法,应该是用爬虫在网络上爬取数据了.本文记录一下笔者爬取天猫某商品的全过程,淘宝上面的店铺也是类似的做法,不赘述.主要是分析页面以及用Python实现简单方便的抓取. 笔者使用的工具如下 Python 3--极其方便的编程语言.选择3.x的版本是因为3.x对中文处理更加友好. Pandas--Python的一个附加库,用于数据整理. IE 11--分析页面请求过程(其他类似的流量监控工具亦可).

新浪爱彩_竞彩足球 Excel_Vba

Sub 新浪爱彩_竞彩足球() On Error Resume Next s = Format(Date, "yymmdd") Cells.Clear at = Array("hrank", "grank", "fight.win", "fight.draw", "fight.lose", "odds[21].fwin", "odds[21].fdrow&q