scrapy 抓取数据核心代码

scrapy 抓取数据核心代码

最近突发奇想,想学习scrapy抓一些数据回来,纯属满足自己的心理。出于这个想法我就通过学习写了一个scrapy中爬虫代码,用来抓取数据的部分,供自己和新手学习研读,代码经过n个网站爬取测试,是完全可以拿来用的,但是注意 item里面的 数据需要填写正确

# -- coding: utf-8 --

import scrapy
from tur_spider.items import TurSpiderItem as Item
import os
from scrapy.http import Request

class SpiderTurSpider(scrapy.Spider):
name = ‘spider_tur’
this_doman = ‘hao123.com
this_url = ‘https://www.hao123.com/
allowed_domains = [this_doman]
start_urls = [this_url]
all_set = []

try:
    file_path = "links.ini"
    file_path1 = "info.ini"
    with open(file_path,'r',encoding="utf-8") as f:
        lines = f.readlines()
    os.remove(file_path)
    os.remove(file_path1)
    i = 0
    for line in lines:
        i = i + 1
        print(i)
        line = line.replace('\n','')
        if this_doman in line:
            if line not in start_urls:
                start_urls.append(line)
                with open(file_path, 'a', encoding="utf-8") as f:
                    lines = f.write(line + '\n')
except:
    print('error')
print('ok')


def parse(self, response):

    ##--------爬取p标签用的部分---------
    lis = response.xpath('//p')
    for li in lis:
        item = Item()
        # item['info'] = li.xpath('./descendant::text()').extract()
        item['info'] = li.xpath('./text()').extract()
        yield item

    ###--------爬取a标签用的部分---------
    lis1 = response.xpath('//a')
    for li in lis1:
        item = Item()
        item['info'] = li.xpath('./descendant::text()').extract()
        # item['link'] = ""
        yield item

    ###--------爬取span标签用的部分---------
    lis2 = response.xpath('//span')
    for li in lis2:
        item = Item()
        item['info'] = li.xpath('./descendant::text()').extract()
        # item['link'] = ""
        yield item


    # # # # # # # # ---------------------- class="content"
    # lis_div_content = response.xpath('//div[@class="content"]')
    # for info in lis_div_content:
    #     item = Item()
    #     item['new'] = info.xpath('./descendant::text()').extract()
    #     yield item



    # # # # #--------爬取url用的部分---------/html/body/table[1]/tbody/tr/td/table[3]/tbody/tr[1]/td/div[4]/div/div/table[2]/tbody/tr[2]/td/a
    lis3 = response.xpath('//a')
    for li in lis3:
        try:
            item = Item()
            tmp_url = li.xpath('./@href').extract()[0]
            link = ""
            if 'http' not in str(tmp_url):
                # 多一行判断,以防止抓到别的网站数据内容
                link = "https://www.superhaber.tv/" + str(tmp_url)

            else:
                link = tmp_url

            if self.this_doman in link:
                if link not in self.all_set:
                    self.all_set.append(link)
                    yield Request(link, callback=self.parse)

            item['link'] = link
            yield item
        except Exception as e:
            print('error happen',e)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vc 抓屏程序,截取当前屏幕核心代码,为了操作和显示方便,这里为其增加了一套窗体,你只需在启动程序后在窗体的空白处点击右键,即可将当前屏幕的内容截取下来,并显示在窗体中,与QQ抓图十分相似,但要像QQ截图那样细致专业,还需要添加更多的辅助功能 ================================================================================ MICROSOFT 基础类库: Test 项目概述 =============================================================================== 应用程序向导已为您创建了此 Test 应用程序。此应用程序 不仅介绍了使用 Microsoft 基础类的基本知识, 而且是编写应用程序的起点。 此文件包含组成 Test 应用程序的每个文件的内容摘要。 Test.vcproj 这是使用“应用程序向导”生成的 VC 项目的主项目文件。 它包含有关生成文件的 Visual C 版本的信息,以及 有关用“应用程序向导”所选择的平台、配置和 项目功能的信息。 Test.h 这是应用程序的主头文件。 它包含其他 项目特定的头文件(包括 Resource.h),并声明 CTestApp 应用程序类。 Test.cpp 这是包含应用程序 类 CTestApp 的主应用程序源文件。 Test.rc 这是程序使用的所有 Microsoft Windows 资源 的列表。 它包含存储在 RES 子目录中 的图标、位图和光标。 可直接在 Microsoft Visual C 中编辑此文件。 项目资源包含在 2052 中。 res\Test.ico 这是一个图标文件,用作应用程序的图标。 此 图标包含在主资源文件 Test.rc 中。 res\Test.rc2 此文件包含不由 Microsoft Visual C 编辑的资源。 应将所有不能由 资源编辑器编辑的资源放在此文件中。 ///////////////////////////////////////////////////////////////////////////// 对于主框架窗口: 项目将包含标准的 MFC 界面。 MainFrm.h, MainFrm.cpp 这些文件包含框架类 CMainFrame,该类派生自 CFrameWnd 并控制所有的 SDI 框架功能。 res\Toolbar.bmp 此位图文件用于创建工具栏的平铺图像。 初始工具栏和状态栏在 CMainFrame 类中构造。 使用资源编辑器编辑此工具栏位图,并 更新 Test.rc 中的 IDR_MAINFRAME TOOLBAR 数组以添加 工具栏按钮。 ///////////////////////////////////////////////////////////////////////////// 应用程序向导将创建一种文档类型和一个视图: TestDoc.h、TestDoc.cpp - 文档 这些文件包含 CTestDoc 类。 编辑这些文件 以添加特殊的文档数据并实现文件的保存和加载 (通过 CTestDoc::Serialize)。 TestView.h、TestView.cpp - 文档视图 这些文件包含 CTestView 类。 CTestView 对象用于查看 CTestDoc 对象。 ///////////////////////////////////////////////////////////////////////////// 其他功能: ActiveX 控件 应用程序支持使用 ActiveX 控件。 打印支持和打印预览支持 应用程序向导已生成了一些代码,通过从 MFC 库调用 CView 类中的成员函数来 处理打印、打印设置和打印预览命令。 ///////////////////////////////////////////////////////////////////////////// 其他标准文件: StdAfx.h、StdAfx.cpp 这些文件用于生成名为 Test.pch 的预编译头文件 (PCH) 和名为 StdAfx.obj 的预编译类型文件。 Resource.h 这是标准头文件,它定义新资源 ID。 Microsoft Visual C 将读取并更新此文件。 ///////////////////////////////////////////////////////////////////////////// 其他说明: 应用程序向导使用“TODO:” 来指示 应添加或自定义的源代码部分。 如果应用程序在共享 DLL 中使用 MFC,且应用程序使用的语言不是 操作系统的当前语言,则需要从 Microsoft Visual C 光盘上 Win\System 目录下将相应的本地化资源 MFC70XXX.DLL 复制到计算机的 system 或 system32 目录下, 并将其重命名为 MFCLOC.DLL。 (“XXX”代表 语言缩写。 例如,MFC70DEU.DLL 包含翻译成 德语的资源。) 如果不这样做,应用程序的某些 UI 元素 将保留为操作系统的语言。 /////////////////////////////////////////////////////////////////////////////

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃黄瓜的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值