springcloud post highcharts service uwp datatable rxjs angularjs版本 vue路由 vue网站模板 vue前端框架 react脚手架 多商户商城模板 bootstrap时间轴 当前线程等待5秒 mysql汉化包 centos查看python版本 python怎么配置环境 python学习文档 python中的join函数 python中import java入门编程 python 教程 谷歌地球打不开 51脚本 maxtoc4d extjs视频教程 3d软件下载 英雄联盟崩溃 linux运维之道 gunzip abr文件 视频编辑专家下载 压枪软件 js字符串比较 暗黑3挂机plusready 黑道圣徒4去马赛克补丁 lol不能全屏 qq浏览器全屏 pr旋转视频
当前位置: 首页 > 学习教程  > python

Scrapy学习-中国大学MOOC-Python网络爬虫与信息提取-北京理工大学嵩天教授

2021/2/6 22:23:44 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Scrapy相关知识及项目实战前言一、Scrapy相关知识1:Scrapy的安装:2:Scrapy框架简介(三个数据流):3:Scrapy框架的使用二、股票数据Scrapy爬虫项目实战1.网页介绍与预期想要的结果2.爬虫思路分析以…

Scrapy相关知识及项目实战

  • 前言
  • 一、Scrapy相关知识
    • 1:Scrapy的安装:
    • 2:Scrapy框架简介(三个数据流):
    • 3:Scrapy框架的使用
  • 二、股票数据Scrapy爬虫项目实战
    • 1.网页介绍与预期想要的结果
    • 2.爬虫思路分析以及标签可行性分析
    • 3.程序步骤
    • 4.代码展示
    • 5.代码几个点需要注意的地方:


前言

本博客会先介绍Scrapy的基础知识,再讲解1个相关实战项目。非常基础,具体视频以及课件,在中国大学MOOC里可以找到,由北京理工大学,嵩天教授主讲:Python网络爬虫与信息提取


一、Scrapy相关知识

主要介绍Scrapy的框架,以及如何使用
在这里插入图片描述

1:Scrapy的安装:

Scrapy是一个快速功能强大的网络爬虫框架。
如果出现错误,大部分是需要安装twisted库,方法如下
在这里插入图片描述

2:Scrapy框架简介(三个数据流):

1)数据流一:
在这里插入图片描述

2)数据流二:

在这里插入图片描述

3)数据流三:

在这里插入图片描述
4)Scrapy框架需要用户写的地方:

在这里插入图片描述

3:Scrapy框架的使用

1)以demo网页举例:
在这里插入图片描述

2)建立爬虫工程:

在这里插入图片描述
3)在工程中产生一个Scrapy爬虫:
在这里插入图片描述
4)配置产生的爬虫:

在这里插入图片描述

5)运行爬虫,获取网页:

在这里插入图片描述
6)总结使用Scrapy的框架方法:

在这里插入图片描述

二、股票数据Scrapy爬虫项目实战

1.网页介绍与预期想要的结果

1)股票网址链接,从这里获得6位数字代码

在这里插入图片描述
2)再从这里获得股票的具体相关信息
在这里插入图片描述

3)输入url链接后,输出如下图:

在这里插入图片描述

2.爬虫思路分析以及标签可行性分析

1)总体思路:
在这里插入图片描述

2):标签分析

1> 先找到/gs/sh_600000.shtml,然后得到6位数字,

在这里插入图片描述

2> 找到相应的单股的信息标签:
先用xpath找到最近的script标签,再将各个值从列表里提取出来
在这里插入图片描述

3.程序步骤

在这里插入图片描述

4.代码展示

1)建立工程和Spider模板
在这里插入图片描述

2)编写Spider,代码如下

在这里插入图片描述


import scrapy
import re


class StocksSpider(scrapy.Spider):
    name = 'stocks'
    #allowed_domains = ['baidu.com']
    start_urls = ['http://quote.stockstar.com/stock/stock_index.htm']

    def parse(self, response):
        for href in response.css('a::attrs(href)').extract():
            try:
                stock = re.search(r'/gs/sh_\d{6}.shtml', href).group(0).split('_')[1].split('.')[0]
                print(stock)
                url = "http://quotes.money.163.com/" + '0' + stock + '.html'
                yield scrapy.Request(url, callback = self.parse_stock)
            except:
                continue


    def parse_stock(self, response):
        infoDict = {}
        script = response.xpath('//div[@class="relate_stock clearfix"]/script[1]').extract()
        info = script[0].strip().split(',')
        infoDict['股票名称'] = eval(re.search(r'name\: \'.*\'', info[0]).group(0).split(':')[1])
        infoDict['股票代码'] = eval(re.search(r'code\: \'\d{6}\'', info[1]).group(0).split(":")[1])
        infoDict['现价'] = eval(re.search(r'price\: \'.*\'', info[2]).group(0).split(":")[1])
        infoDict['涨跌幅'] = re.search(r'change\: \'.*%', info[3]).group(0).split("'")[1]
        infoDict['昨收'] = eval(re.search(r'yesteday\: \'.*\'', info[4]).group(0).split(":")[1])
        infoDict['今开'] = eval(re.search(r'today\: \'.*\'', info[5]).group(0).split(":")[1])
        infoDict['最高'] = eval(re.search(r'high\: \'.*\'', info[6]).group(0).split(":")[1])
        infoDict['最低'] = eval(re.search(r'low\: \'.*\'', info[7]).group(0).split(":")[1])
        yield infoDict

3)编写Pipelines,代码如下:
在这里插入图片描述

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class BaidustocksPipeline(object):
    def process_item(self, item, spider):
        return item

class BaidustocksInfoPipeline(object):
    def open_spider(self, spider):
        self.f = open('BaiduStockInfos.txt', 'w')

    def close_spider(self, spider):
        self.f.close()

    def process_item(self, item , spider):
        try:
            line = str(dict(item)) + '\n'
            self.f.write(line)
        except:
            pass
        return item

4)配置ITEM_PIPELINES选项:

找到ITEM_PIPELINES 取消掉注释,并更改BaidustocksInfo

在这里插入图片描述

5)执行程序:

在这里插入图片描述

5.代码几个点需要注意的地方:

1)Stocks.py的编写,Xpath的用于需要注意下。


本文链接: http://www.dtmao.cc/news_show_2000061.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?