• 14、vcs爬虫


    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自带

  • 相关阅读:
    解决安装Visual Studio 2012后SQL Server 2008 远程过程调用失败的问题
    解决 Visual Studio 2012 有时不能调试的问题
    WPF实现窗体最小化后小图标在右边任务栏下
    WinForm实现窗体最小化后小图标在右边任务栏下
    C# 开机启动代码
    C# ?? 操作符示例
    WPS页面设置
    PCA(主成分分析)和LDA详解
    MySQL命令行导入sql文件时出现乱码解决方案
    IKAnalyzer 独立使用 配置扩展词典
  • 原文地址:https://www.cnblogs.com/moox/p/13199511.html
Copyright © 2020-2023  润新知