zoukankan      html  css  js  c++  java
  • 一、scrapy基本使用

    一、scrapy基本使用

    1.1 环境安装:

    • linux和mac操作系统:
      • pip install scrapy
    • windows系统:
      • pip install wheel
      • 下载twisted,下载地址为http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
      • 安装twisted:pip install Twisted‑17.1.0‑cp36‑cp36m‑win_amd64.whl
      • pip install pywin32
      • pip install scrapy
        测试:在终端里录入scrapy指令,没有报错即表示安装成功!

    1.2 scrapy使用流程:

    • 创建工程:

      • scrapy startproject ProName
    • 进入工程目录:

      • cd ProName
    • 创建爬虫文件:

      • scrapy genspider spiderName www.xxx.com
    • 编写相关操作代码

    • 执行工程:

      • scrapy crawl spiderName
    • 爬虫文件剖析:

      import scrapy
      class QiushiSpider(scrapy.Spider):
            name = 'qiubai' #应用名称
            #允许爬取的域名(如果遇到非该域名的url则爬取不到数据,一般注释)
            allowed_domains = ['https://www.qiushibaike.com/']
            #起始爬取的url
            start_urls = ['https://www.qiushibaike.com/']
            #访问起始URL并获取结果后的回调函数,该函数的response参数就是向起始的url发送请求后,获取的响应对象.该函数返回值必须为可迭代对象或者NUll 
            def parse(self, response):
                print(response.text) #获取字符串类型的响应内容
                print(response.body)#获取字节类型的相应内容
      
    • 配置文件settings.py修改:

      # Crawl responsibly by identifying yourself (and your website) on the user-agent
      # 16行 定义请求头
      USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'
      # 19行
      # Obey robots.txt rules
      # 不遵守robots协议
      ROBOTSTXT_OBEY = False 
      
    • scrapy基于xpath数据解析操作:

      import scrapy
      
      class QiushiSpider(scrapy.Spider):
          #
          name = 'qiuShi'
          start_urls = ['https://www.qiushibaike.com/text']
      
          def parse(self, response):
              #xpath为response中的方法,可以将xpath表达式直接作用于该函数中
              div_list = response.xpath('//*[@id="content"]/div/div[2]/div')
              print(type(div_list))
              for div in div_list:
                #xpath函数返回的为列表,列表中存放的数据为Selector类型的数据。我们解析到的内容被封装在了								Selector对象中,需要调用extract()函数将解析的内容从Selecor中取出。
                  name = div.xpath('./div[1]/a[2]/h2/text()')[0].extract()
                  content = div.xpath('./a//span/text()').extract()
                   #打印展示爬取到的数据
                  print(name,content)
      
  • 相关阅读:
    《精通CSS网页布局》读书报告 ----2016-12-5补充
    定位始终居中显示
    IntelliJ idea的使用
    模拟发送http请求
    知识漏洞
    【NX二次开发】Block UI 半径尺寸(沿曲线的位置)
    【NX二次开发】Block UI 角度尺寸
    【NX二次开发】Block UI 线性尺寸
    【NX二次开发】Block UI 表达式
    【NX二次开发】Block UI 整形
  • 原文地址:https://www.cnblogs.com/merryblogs/p/14338870.html
Copyright © 2011-2022 走看看