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
- ? 搜索内容
- 右上:http请求信息
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自带
- python3:urllib.request urllib.parse
- urllib.request
以上是关于14vcs爬虫的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段14——Vue的axios网络请求封装
VSCode自定义代码片段14——Vue的axios网络请求封装