数据采集作业3

作业1

代码及图片:(这里只给出爬虫代码,settings.py等代码都在Gitee中)

点击查看代码
import scrapy
from Practical_work3.items import work1_Item

class Work1Spider(scrapy.Spider):
    name = 'work1'
    # allowed_domains = ['www.weather.com.cn']
    start_urls = ['http://www.weather.com.cn/']

    def parse(self, response):
        data = response.body.decode()
        selector=scrapy.Selector(text=data) 
        img_datas = selector.xpath('//a/img/@src')
        for img_data in img_datas:
            item = work1_Item()
            item['img_url'] = img_data.extract()
            yield item

作业心得:

通过本次使用 Scrapy 框架爬取中国气象网图片的实践,我深刻体会到 Scrapy 在处理多线程爬取任务时的强大性能。单线程和多线程的实现方式对比明显,多线程显著提升了爬取效率。
同时,通过控制总页数和下载图片数量,我学会了如何有效地限制爬取范围,避免过度抓取资源。总体而言,Scrapy 框架不仅简化了爬虫开发流程,还提供了灵活的并发控制和数据处理机制,为后续的爬虫项目打下了坚实的基础。

Gitee文件夹链接:点这里

作业2

代码及图片:

点击查看代码
from typing import Iterable
import scrapy
from scrapy.http import Request
import re
import json
from Practical_work3.items import work2_Item

class Work2Spider(scrapy.Spider):
    name = 'work2'
    # allowed_domains = ['25.push2.eastmoney.com']

    start_urls = ['http://25.push2.eastmoney.com/api/qt/clist/get?cb=jQuery1124021313927342030325_1696658971596&pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f2,f3,f4,f5,f6,f7,f12,f14,f15,f16,f17,f18&_=1696658971636']
    def parse(self, response):
        data = response.body.decode()
        item = work2_Item()
        data = re.compile('"diff":\[(.*?)\]',re.S).findall(data)
        columns={'f2':'最新价','f3':'涨跌幅(%)','f4':'涨跌额','f5':'成交量','f6':'成交额','f7':'振幅(%)','f12':'代码','f14':'名称','f15':'最高',
        'f16':'最低','f17':'今开','f18':'昨收'}
        for one_data in re.compile('\{(.*?)\}',re.S).findall(data[0]):
            data_dic = json.loads('{' + one_data + '}')
            for k,v in data_dic.items():
                item[k] = v
            yield item


作业心得:

通过本次作业,我深入理解了Scrapy框架中Item和Pipeline的使用,特别是如何将爬取的数据通过Pipeline进行清洗、验证并存储到MySQL数据库中。
掌握XPath选择器在复杂HTML结构中提取所需信息的能力,使我能够高效地抓取东方财富网股票相关信息。整个过程不仅提升了我对数据爬取和存储技术的理解,也增强了我对Web数据处理流程的掌控能力。

Gitee文件夹链接:点这里

作业3

代码及图片:

点击查看代码
import scrapy
from Practical_work3.items import work3_Item

class Work3Spider(scrapy.Spider):
    name = 'work3'
    # allowed_domains = ['www.boc.cn']
    start_urls = ['https://www.boc.cn/sourcedb/whpj/']

    def parse(self, response):
        data = response.body.decode()
        selector=scrapy.Selector(text=data) 
        data_lists = selector.xpath('//table[@align="left"]/tr')
        for data_list in data_lists:
            datas = data_list.xpath('.//td')
            if datas != []:
                item = work3_Item()
                keys = ['name','price1','price2','price3','price4','price5','date']
                str_lists = datas.extract()
                for i in range(len(str_lists)-1):
                    item[keys[i]] = str_lists[i].strip('<td class="pjrq"></td>').strip()
                yield item


作业心得:

在完成本次作业的过程中,我深入学习了如何使用Scrapy框架结合XPath选择器来爬取中国银行的外汇牌价数据,并通过Pipeline将数据序列化后存储到MySQL数据库中。
通过这个项目,我不仅掌握了如何解析复杂的表格数据,还学会了如何处理多页数据抓取和存储的流程。这让我对Scrapy框架在实际数据抓取中的应用有了更全面的理解,并提升了我在数据存储和序列化方面的技能

Gitee文件夹链接:点这里

posted @ 2024-11-11 20:52  小鹿的博客  阅读(6)  评论(0编辑  收藏  举报