14vcs爬虫

Posted moox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14vcs爬虫相关的知识,希望对你有一定的参考价值。

1、聚焦爬虫

代理浏览器上网

网页的特点

  • 网页都有自己唯一的url
  • 网页内容都是html结构
  • 使用的都是HTTP,HTTPS协议

爬取步骤:

  • 给一个url
  • 写程序,模拟浏览器方位url
  • 解析内容

环境:

Windows环境、Linux环境

python3.6 64位

编辑工具,vscode,sublime,pycharm

大致内容:

  • 使用到的库:
    • urllib equests4....
  • 解析网页的内容知识
    • 正则表达式、bs4、xpath、jsonpath
  • 设计到动态HTML
    • selenium + phantomjs/chromeheadless
  • scrapy 框架
    • 高性能框架使用
  • scrapy-redis组件
    • redis,分布式爬虫
  • 涉及到爬虫,反爬虫,反反爬虫
    • UA、代理、验证码、动态页面

2、抓包工具

fiddler:请求和响应都需要经过fiddler,请求 == fiddler == 服务器(响应)

  • fiddler 配置:
    • tools -- options -- https
    • 选中:capture https、decrypt https trafic、ignore xxx
    • 点击右边action:信任根证书 -- ok
    • 重启
  • 抓包
    • <>:HTML内容
    • {json}:json数据,很有可能就是个接口
    • {css}:css文件
    • {js}:js文件
    • 停止:file -- capture -- 选中就会停止
  • 工具右侧:
    • 右上:http请求信息
      • raw:请求头部的详细信息
      • webforms:请求所带参数,query_string,formdata
    • 右下:
      • raw
      • header
      • response
    • 左下
      • 命令行:clear
      • select json
      • select html
      • select image
      • ? 搜索内容

vscode python环境配置

  • 汉化包:

    • 扩展 -- chinese(简) -- install --
  • python环境:

    • 扩展 -- python -- install
    • 资源管理器:新建文件夹,新建文件
    • 左下角:点击选择python版本解析器,右键在终端中运行python文件
    • 右上角:绿色三角按钮即可执行python文件
  • 配置和插件

    • code -- 首选项 -- 设置 -- 用户(工作区)
    • aotopep8 : 自动调整格式。alt + shift + f ,会提示安装,也可以扩展:autopep8
  • 搭建虚拟环境

    • 终端执行:python3.8 -m venv .venv
    • 资源管理器:.vscode -- setting 中可以设置虚拟环境(可以不变)
    {
        "python.pythonPath": "C:\Users\zhangfd\AppData\Local\Programs\Python\Python38-32\python.exe"
    }
    
  • 搭建django开发环境(自动生成)

    • 文件 -- 打开 -- 新建文件mydjango -- 选择mydjango

    • 为该目录创建虚拟环境:左下角点击 -- 终端 -- python8.3 -m venv .venv

    • 若不是python8.3,执行python -m venv .venv

    • 配置文件:ctl + shift + p -- python回车 -- 选择python解析器 -- 左下角能看到python**(‘.env‘:env)

    • 终端:在虚拟环境安装Django

      pip install django
      django-admin startproject mysite .  ## . 表示在当前目录中创建项目mysite
      ## 执行成功后,在资源管理器:MYSITE 中会创建mysite目录和manager.py
      cd mysite
      python manage.py runserver ## 启动运行环境,python manage.py runserver [ip port]
      ## 再来创建一个app,就可以安装业务逻辑进行代码编写了,一定要在项目目录里面
      python manage.py  startapp app01 
      python manage.py startapp peom
      ## 包含的文件
      migrations -- 数据库迁移相关的文件
      __init__py -- 初始化文件
      admin.py   -- 后台管理相关文件
      apps.py    -- 对改项目的配置
      models.py  -- 数据库相关的文件
      tests.py   -- 测试使用的文件
      views.py   -- 视图相关文件,如新增页面等,显示在浏览器中的
      
    • 使用debug方式运行

      • 资源管理器:app01 -- views.py
      • 左侧中间debug运行:点击 创建launch.json -- 选择django -- 此时.vscode中会生成配置文件launch.json文件
      • 运行debug,如果报错,pip list查看是否有Django,如果没有,可运行.venvscriptsactive.bat或者再次重装Django,pip install django,直到运行出http://127.0.0.1:8000/
      • 在app01中创建模板文件:右键-- 创建文件夹 templates -- 创建文件index.html -- !+tab 会生成HTML基本结构
      • 基础命令
      where django-admin
      django-admni -h
      
    • 简单应用

      • 1、创建简单页面,request,response
      ## 用户在浏览器中添加链接,发起链接请求,交给后台的view去做处理,view通过函数处理
      ## view规则:函数用来表示用户请求
      # 1、网页内容:peom/views.py中写网页内容
      from django.http import HttpResponse
      # Create your views here.
      def chunxiao(request): ## 指定request 
          return HttpResponse("春眠不觉晓,处处闻啼鸟")  ## 使用HttpResponse封装返回
      
      # 2、路由挂载:在项目mysite中配置url,mysite/mysite/urls.py
      from poem.views import chunxiao ## 从包poem的模块views中导入指定函数chunxiao
      ## 总的映射位置
      ## 暂且放在默认的url中,但最好是每个项目都有自己的链接,不放在此处,需要在子应用中创建urls.py
      urlpatterns = [		
      	...
          path(‘webcx/‘,chunxiao)
      ]
      # 3、启动Django
      python manage.py runserver 80
      # 4、打开网页 127.0.0.1:port/**
      
      创建简单页面总结:
      ## 需要有承载业务的应用
      django-admin startapp app_name
      app_name/views 创建视图函数
      project_name/urls 添加映射
      
      • 2、应用独立路由,urls.py
      ## 1、app_name/urls.py 创建urls.py文件
      from django.urls import path
      
      from . import views
      
      ## path三部分,url,views中的函数,name
      urlpatterns = [
          path(‘webcx‘,views.chunxiao,name="chunxiao"),
          path(‘webeee‘,views.eee,name="eee"),
      ]
      
      ## 2、文件project_name/urls.py中引入独立的子路由器urls
      from django.contrib import admin
      from django.urls import path,include ## 引入include函数
      
      urlpatterns = [
          path(‘admin/‘, admin.site.urls),
          path(‘shige/‘,include(‘poem.urls‘)) ## 将独立的urls引入,’shige/’可随意设置
      ]
      ## 3、访问
      http://127.0.0.1/shige/webcx
      http://127.0.0.1/shige/webeee
      
      • 3、使用模板 -- html
      # 1、创建模板
      ## 由于返回的内容是html,因此需要创建html内容,新建文件夹templates和app_name,
      ## 此处的app_name只是为了方便高效,很多html时做区分归档,app_name可以指定如poem
      poem/templates/poem/shige.html ## 新建shige.html
      ## 使用!+tab 引入HTML格式,右下角选择语言模式时需要时html才能引入
      ## 注意此处的内容,因为shige.html是一个模板,当在写一首诗歌时就会有问题,因此需要使用参数
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>shige</title>
      </head>
      <body>
          <article>
              <h1>春晓</h1>
              <p>春眠不觉晓,</p>
              <p>处处闻啼鸟。</p>
              <p>夜来风雨声,</p>
              <p>花落知多少。</p>
          </article>
      </body>
      </html>
      
      # 2、poem/views.py中定义返回的函数
      def chunxiao(request):
          return render(request,"poem/shige.html",{})
      
      # 3、增加应用
      ## project_name/project_name/settings.py中引入app_name应用
      INSTALLED_APPS = [
          ‘django.contrib.admin‘,
          ‘django.contrib.auth‘,
          ‘django.contrib.contenttypes‘,
          ‘django.contrib.sessions‘,
          ‘django.contrib.messages‘,
          ‘django.contrib.staticfiles‘,
          ‘poem‘, ## 此处增加app_name应用
      ]
      
      # 4、访问页面
      http://127.0.0.1/shige/webcx
      
      # 5、修改shige.html模板为通用模板
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>{{ shige_name }}</title>
      </head>
      <body>
          <article>
              <h1>{{  title }}</h1>
              <p>{{ content }}</p>
          </article>
      </body>
      </html>
      
      ## 6、修改views.py 传参给html文件
      def chunxiao(request):
          return render(request,"poem/shige.html",{"shige_name":"春晓","content":"春眠不觉晓,处处闻啼鸟。","title":"春晓"})
      def eee(request):
          return render(request,"poem/shige.html",{"shige_name":"eee","content":"曲项向天歌,白毛浮绿水。","title":"eee"})
      
      ## 使用模板总结:
      - 在系统的settings.py 中设置INSTALLED_APPS
      - 在子应用中创建tmplates/app_name
      - 在目录中创建模板html文档
      - 模板文档有自己的语法,{{ content }} 接收传入的参数
      - 在views里面使用return render(request,template_name,params_dict)
      
      
      • 使用静态文件 -- css
      # 1、在html中指定类class
      <body>
          <article>
              <h1 class="title">{{  title }}</h1>
              <p class="content">{{ content }}</p>
          </article>
      </body>
      # 2、新建静态文件夹:app_name/static/
      ## app_name/static/app_name/yangshi.css,根据class写样式
      .title{
          text-align: center;
          color: red;
      }
      .content{
          text-align: center;
          color: green;
      }
      # 3、在html的head中引入样式
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>诗歌{{ title }}</title>
          <!--引入样式BEGIN-->
          {% load static %}
          <link rel="stylesheet" type="text/css" href="{% static ‘poem/yangshi.css‘ %}">
           <!--引入样式 END-->
      </head>
      # 4、访问页面
      
      • 小项目
      # 初步的链接设计
      - 首页(诗歌列表) /poem/
      - 诗歌详情 /poem/detail/<id>
      - 添加诗歌 /poem/add
      - 删除诗歌 /poem/delete/<id>
      - 修改诗歌 /poem/edit/<id>
      
      # 操作步骤
      ## 1、创建项目及子应用,
      django-admin startproject mypeom
      cd mypeom
      django-admin startapp peom
      python manage.py runserver 80
      浏览器:localhost
      
      ## 2、添加基本的url和views增删改查
      - 总路由表中引入子路由表
      from django.urls import path,include
      urlpatterns = [
          path(‘admin/‘, admin.site.urls),
          path(‘shige/‘,include(‘poem.urls‘)),
      ]
      
      ## 3、poem 应用的子路由
      ## poem 应用的子路由
      from django.urls import path
      from . import views
      urlpatterns = [
          # 主页 详情 增 删 改
          path(‘‘,views.index,name=‘index‘),
          path(‘detail/<int:id>‘,views.detail,name=‘detail‘),
          path(‘add‘,views.add,name=‘add‘),
          path(‘delete‘,views.delete,name=‘delete‘),
          path(‘edit‘,views.edit,name=‘edit‘),
      ]
      
      # 4、编写views函数页
      def index(request):
          return HttpResponse(‘index page‘)
      
      def detail(request,id):
          return HttpResponse("detail page of {}".format(id))
      
      def add(request):
          return HttpResponse("add page")
      
      def delete(request,id):
          return HttpResponse("delete page of {}".format(id))
      
      def edit(request,id):
          return HttpResponse("edit page of {}".format(id))
      
      # 5、添加model以及数据库的支持
      project_name/settings.py增加INSTALLED_APPS
      INSTALLED_APPS = [
          ‘django.contrib.admin‘,
          ‘django.contrib.auth‘,
          ‘django.contrib.contenttypes‘,
          ‘django.contrib.sessions‘,
          ‘django.contrib.messages‘,
          ‘django.contrib.staticfiles‘,
          ‘poem‘, ##增加aPP_name
      ]
      ## app_name/models.py
      from django.db import models
      # Create your models here.
      class Peom(models.Model):
          title = models.CharField(max_length=100)
          content = models.CharField(max_length=1000)
      def __str__(self):
          return self.title
      
      ## 终端命令行:
      python manage.py makemigrations poem
      - 然后会在app_name/migrations/__pycache__下生产0001——initial.py
      - 文件中就会包含id , title  和 content
      
      python manage.py migrate
      - 执行上述命令后可使用sqlite插件查看数据
      - 安装SQLite -- 查看 -- 命令面板 -- SQLite:open database -- db.sqlite3
      - 资源管理器 -- SQLITE EXPLORER -- sqlite3 -- poem_peom
      
      ## 进入shell,练习使用Model操作表数据
      python manage.py shell
      >>> from poem.models import Peom
      >>> Peom.objects.all()
      <QuerySet []>
      >>> Peom.objects.create(title=‘春晓‘,content=‘春眠不觉晓‘)
      <Peom: Peom object (1)>
      >>> Peom.objects.all()
      <QuerySet [<Peom: Peom object (1)>]>
      >>> Peom.objects.create(title=‘eee‘,content=‘曲项向天歌‘)
      <Peom: Peom object (2)>
      >>> Peom.objects.all()
      <QuerySet [<Peom: Peom object (1)>, <Peom: Peom object (2)>]>
      
      -- 再次进入数据库- 资源管理器 -- SQLITE EXPLORER -- sqlite3 -- poem_peom
      -- 能看到刚插入的数据
      
      # 6、实现首页诗歌列表页面
      
      
  • 搭建flask开发环境(手动创建)

    • 文件 -- 打开文件 -- 创建文件夹crm(此处的文件夹crm就是项目名称) -- 选中crm -- 确定
    • 创建虚拟环境:左下角点击 -- 终端 -- python3.8 -m venv .venv
    • 激活虚拟环境:ctrl+shift+p -- python -- 回车
    • 打开.vscode:点击左下角(ctrl+shift+p) -- 选择虚拟环境(python*(‘.venv‘:venv))
    • 创建flask:点击左下角 -- 终端 -- pip install flask
    • 在vscode 中编写项目:CRM -- 新建文件app.py
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def index():
        return "hello world flask"
    
    if __name__ == "__main__":
        app.run()
    
    • debug运行:debug -- 创建launch.json -- flask -- 资源管理器中生成launc.json配置文件
    • debug 运行:出现http://127.0.0.1:5000/

3. urllib 库

模拟浏览器发送请求的库,python自带

以上是关于14vcs爬虫的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

VCS查看代码覆盖率(行状态机翻转条件分支覆盖率等)

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VCS High Availability Engine service服务一直处于启动状态