首页 > 其他分享 >爬虫-Scrapy框架安装使用2

爬虫-Scrapy框架安装使用2

时间:2023-07-01 17:11:46浏览次数:41  
标签:框架 class 爬虫 col Scrapy book response ### scrapy

Scrapy 框架其他方法功能集合笔记

使用LinkExtractor提取链接

  • 使用Selector

    import scrapy
    
    from bs4 import BeautifulSoup
    
    class BookSpider(scrapy.Spider):
        name = "book"
        allowed_domains = ["books.toscrape.com"]
        start_urls = ["http://books.toscrape.com/"]
    
        def parse(self, response):
            soup = BeautifulSoup(response.text,'lxml')
            urls = soup.find_all(class_="col-xs-6 col-sm-4 col-md-3 col-lg-3")
            for i in urls:
                ### 提取链接,得到没有域名的路径,如图一所示
                url = i.find(class_="image_container").a.attrs.get('href')
                print(url)
                ### 使用response.urljoin方法计算出绝对url地址,如图二所示
                URL = response.urljoin(url)
                print(URL)
    

  • 使用LinkExtractor

 import scrapy
 from scrapy.linkextractors import LinkExtractor

 from bs4 import BeautifulSoup

 class BookSpider(scrapy.Spider):
     name = "book"
     allowed_domains = ["books.toscrape.com"]
     start_urls = ["http://books.toscrape.com/"]

     def parse(self, response):
         soup = BeautifulSoup(response.text,'lxml')
         urls = soup.find_all(class_="col-xs-6 col-sm-4 col-md-3 col-lg-3")
         for i in urls:
             ### 提取链接
             url = i.find(class_="image_container").a.attrs.get('href')
             ### 创建一个LinkExtractor对象,使用一个或多个构造器参数描述提取规则
             ### 如图一所示
             links = LinkExtractor(url)
             ### 调用LinkExtractor对象的extract_links方法传入一个Response对象,该方法依据创建对象时所描述的提取规则,
             ### 在Response对象所包含的页面中提取链接,最终返回一个列表,其中的每一个元素都是一个Link对象,即提取到的一个链接
             ### 如图二所示
             Link = links.extract_links(response)
             ### 得到最终链接
             ### 如图三所示
             print(Link)



使用Exporter导出数据

1、 在Scrapy中,负责导出数据的组件被称为Exporter(导出器
2、 Scrapy内部实现了多个Exporter,每个Exporter实现一种数据格式的导出
3、 parse方法需要返回列表套字典

  • 使用命令行参数指定
import scrapy

from bs4 import BeautifulSoup

class BookSpider(scrapy.Spider):
    name = "book"
    allowed_domains = ["books.toscrape.com"]
    start_urls = ["http://books.toscrape.com/"]

    def parse(self, response):
        booklist=[]
        soup = BeautifulSoup(response.text,'lxml')
        book_list = soup.find_all(class_="col-xs-6 col-sm-4 col-md-3 col-lg-3")
        for book in book_list:
            name = book.article.h3.a['title']
            price = book.find(class_="price_color").text
            booklist.append({'书名':name,'价格':price})
        ### 返回列表套字典
        return booklist

1、 -o 指定导出路径
2、 -t 指定导出文件类型,一般可以不写,scrapy爬虫可以通过文件后缀判断导出类型

### 终端执行命令如下:
scrapy crawl book -o b.csv

结果如下:

标签:框架,class,爬虫,col,Scrapy,book,response,###,scrapy
From: https://www.cnblogs.com/yigehulu/p/17503423.html

相关文章

  • Taurus .Net Core 微服务开源框架:Admin 插件【4-3】 - 配置管理-Mvc【Plugin-MicroSer
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-2】-配置管理-Mvc【含请求日志打印】本篇继续介绍下一个内容:1、系统配置节点:Mvc- Plugin- MicroService 配置界面:注册中心 界面如下:简要说明:该菜单下,显示该微服务类型的菜单,可能为服务端、或客户端、或两......
  • 八期day03-反编译工具和hook框架
    一反编译工具1.1常见反编译工具常见的反编译工具:jadx(推荐)、jeb、GDA反编译工具依赖于java环境,所以我们按照jdk1.2JDK环境安装#官方地址:(需要注册-最新java21)https://www.oracle.com/java/technologies/downloads/#下载地址链接:https://pan.baidu.com/s/1JxmjfGhW......
  • pytest + yaml 框架 -42.支持 mock 功能
    前言前面已经通过代理实现了抓包自动生成yaml用例的功能,通过代理也可以实现mock功能。mock有2种场景:1.直接拦截发出去的请求,还未到达服务端,模拟自定义返回结果2.发出去的请求,服务端有反回,拦截返回的结果,篡改返回内容,模拟自己需要的数据拦截发出去的请求先看第一种场景:直接......
  • scrapy 2.x相关配置
    使用pip安装scrapy之后可能并不能直接运行,会遇到各种报错,可能是依赖库的版本不兼容导致的,可能需要安装或更新以下依赖:cryptography==38.0.4​pyopenssl==22.0.0​certifi==2023.5.7在windowspython3.8+下的scrapy框架内使用asyncio需要先执行以下代码:asyncio.set_even......
  • WDM(Windows Driver Model)驱动程序模型和WDF(Windows Driver Foundation)驱动程序框架,区
    WDM(WindowsDriverModel)驱动程序模型和WDF(WindowsDriverFoundation)驱动程序框架是微软在Windows操作系统中使用的两种不同的驱动开发框架。它们有以下区别、特点和应用领域。区别:WDM是传统的驱动程序模型,它建立在Windows内核模式驱动程序接口(DeviceDriverInterface,DDI)之上......
  • vane 一个适用于前端打工人的全栈框架,nodejs+vue3+typescript
    vane写这个的初衷是因为每次用node写接口的时候总是需要一些写大一堆的东西,也有些人把很多接口都放在一个js文件内,看起来很是杂乱,后来用到nuxt写的时候,感觉用文件名来命名接口路径很是方便,无论是query参数还是params参数,都可以通过文件名来命名,也可以通过文件夹层级......
  • 爬虫为什么要用HTTP代理?
    爬虫为什么会使用到HTTP代理这个问题,我们得先讲讲,什么情况下我们会使用爬虫?众所周知,爬虫在许多领域都有广泛的应用:1.我们日常生活中接触最多的,百度、360、Google搜索等等此类的搜索引擎就是利用爬虫程序来实现的,比如Googlebot是目前最为知名和广泛使用的爬虫之一、百度的爬虫程序B......
  • 【后端】SSM框架下REST风格代码注释详解
    前言最近学习了一下SSM,不得不说,spring不用注解真的是天打雷劈,就那个bean真的就是折磨人。下面是我总结的spring注解。@Value此注解可以用来获取导入的jdbc.properties文件的值。@Value("${jdbc.driver}")privateStringdriver;//用法是这样的12jdbc.properties文件:jdbc.driv......
  • Java 网络爬虫,就是这么的简单
    是Java网络爬虫系列文章的第一篇,如果你还不知道Java网络爬虫系列文章,请参看学Java网络爬虫,需要哪些基础知识。第一篇是关于Java网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻的新闻标题和详情页为例,需要提取的内容如下图所示: 我们需要提取图中圈出来的文字及其对......
  • go爬虫 简单请求
     demo1.go packagemainimport("fmt""io/ioutil""net/http")funcfech(urlstring)string{client:=&http.Client{}req,_:=http.NewRequest("GET",url,nil)req.Header.Set(&quo......