web作业

web学习001

pycharm专业版

PHPstudy环境搭建

官网下载安装phpstudy后主界面
在这里插入图片描述

  • 网站根目录

开启服务,打开其他选项菜单,网站根目录
本地网站的一切都在这也可以找到安装路径里的WWW文件夹
在这里插入图片描述
前些天搭建的DVWA也没怎么做,过几天再说吧

  • host配置
  • 其他选项菜单打开host配置文件
  • 浏览器里可以访问本地页面了也就是WWW文件夹里的东西
  • 在这里插入图片描述
  • 数据库登录
  • 在这里插入图片描述
    密码root
  • PHPadmin页面
  • 在这里插入图片描述

PHP基础

1.开始结束标记<? ... ?>

2.定义变量: 变 量 名 例 : 变量名 例: str=“锦清笋”;不需要指明数据类型

3.输出语句:

(1)echo “hello world!”;—echo命令

(2)print();输出语句,是函数,有返回值。输出成功返回1,失败返回0。

(3)printf();格式化输出字符串。例:printf("%d,%f",12,12.3);

(4)sprintf();格式化拼接字符串,不是输出语句,只能将字符串拼接。

(5)print_r();输出数组、对象等复合数据类型

4.数据类型:

(1)简单数据类型:

     Boolean

布尔型

     string

字符串型

     integer

整型

     float

浮点型

(2)复合数据类型:

     array

数组

     object

对象

(3)特殊数据类型:

     resource

资源

     null

空值

5.数据类型转换:

在变量前加上括号括起来的类型名称即可。

6.检测数据类型:

is_bool 检查变量是否是布尔类型

is_string …

is_float或is_double …

is_integer 或 is_int …

is_null …

is_array …

is_object …

is_numeric 检测变量是否为数组或由数字组成的字符串

7.声明和使用常量:

定义语法:define(‘PRICE’,100);

echo
PRICE;

8.变量作用域:

局部变量:即在函数的内部定义的变量,其作用域是所在的函数

全局变量:即被定义在所有函数以外的变量,其作用域是整个php文件,但是在用户定义的函数内部不可用。想在用户定义的函数内部使用全局变量,要使用global关键词声明。

例:$a=123;

function test()

     {

              global

$a;

              echo

$a;

     }

静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。使用静态变量时,先要用关键字static来声明变量,需要把关键字static放在要定义的变量之前。

9.预定义变量:通过预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。如:

G L O B A L S , GLOBALS, GLOBALS,_SERVER, G E T , _GET, GET,_POST, R E Q U E S T , _REQUEST, REQUEST,_COOKIE, S E S S I O N , _SESSION, SESSION,_FILES.

10.字符串运算符:句号:“.”;连接字符串

特别是拼写sql语句时:".$变量名."

11.逻辑运算符:逻辑异或:^或xor 当一个为真,一个为假时,结果为真,其他为假。

恒等:===

优先级:||在and之前,or在and之后。

12.@错误屏蔽:@错误屏蔽运算符可以对程序中出现错误的表达式进行操作,进而对错误进行屏蔽,其使用的方法就是在错误的表达式前加“@”即可。它只是对错误信息进行屏蔽,并没有真正解决错误。

13.定义和调用函数:函数名不区分大小写

function test( v a r 1 , var1, var1,var2)

{

     函数体

}

test( v a r 1 , var1, var1,var2);

函数的返回值:使用return返回单个值,和使用list()语言结构返回多个值。

传值调用:$变量名

传址调用:&$变量名

14.Form表单:

两种提交方式:get:将表单数据当做url的一部分传过去;url格式:http://地址:端口/目录/文件?var1=value1&…varn=valuen最长1024k

post:相比get而言,更安全,并不会导致因数据过长而引起url的数据丢失

使用超链接传值时必须用get来接收:ADD 接收: u i d = uid= uid=_GET[“uid”];

注意:<?=...?>的格式只有在没有判断语句时才能使用。

对表单传递的变量进行编码和解码:PHP中实现对查询字符串进行URL编码可以通过函数urlencode()实现,该函数的使用格式如下:string urlencode(string str);对URL编码后的查询字符串进行解码,可以通过urldecode()函数实现,该函数的使用格式如下:string urldecode(string str);

15.PHP连接数据库:

步骤: 一、建立连接------mssql_connect(server,uid,pwd);

     二、指定database-------mssql_select_db(databasename);

     三、执行sql------mssql_query($sql,$link);

     四、处理记录集-------资源类型数据,格式:bof---数据---eof

     五、以特定格式读取数据-----mssql_fetch_array()....

     六、释放相关资源、关闭连接------mssql_free_result($result);mssql_close();

16.数组:php的数组由键值和value值组成

定义:$array = array(“键值”=>“value”,“键值”=>“value”,“键值”=>“value”);如果不给键值赋值,默认从0开始的int值

相关函数:(1)in_array(“值”,数组名); 返回bool型-----查看数组中是否存在某value值

     (2)array_key_exists("key值",数组名); 返回bool型-----查看数组中是否存在某键值

     (3)array_keys(数组名);---将数组键值返回出来形成一个新数组,此键值作为新数组的value值

     (4)array_values(数组名);---将数组value值返回出来形成一个新数组,此值作为新数组的value值

     (5)key(数组名);----返回当前指针指向的元素key值

     (6)current(数组名);----返回当前指针指向的元素value值

     (7)next(数组名);----挪动当前数组指针到下一步

     (8)reset(数组名);----恢复数组指针,指向第0个元素

     (9)end(数组名);----将指针挪向最后一个元素

     (10)prev(数组名);----将指针向前挪动一位

     (11)foreach(数组名 as $key=>$value)

              {

                      $key是键值,$value是value值,实现数组遍历

              }

     (12)each(数组名);----将当前数组元素依次取出(自动挪动指针)并放到一个新的数组中

     (13)array_shift(数组名);----返回数组中第一个元素值

     (14)array_pop(数组名);----返回数组最后一个元素值

     (15)array_push(数组名,value);----向数组中追加元素

     (16)array_unshift(数组名,value);----在数组最前面添加元素

     (17)array_pad(数组名,数组长度,value);----向数组中追加多个元素,对数组副本操作,不改变原数组,返回一个新数组

     (18)count();----返回个数

     (19)array_unique(数组名);----去掉数组中重复部分,操作数组副本,不改变原数组,返回新数组

     (20)sort(数组名);----从小到大升序排列数组value值,一般针对int型value值,返回bool型,成功返回true

     (21)rsort(数组名);----从大到小,逆序排列数组value值

     (22)array_combine(数组1,数组2);----将数组1的value值作为key,数组2的value值作为value值,形成一个新数组

     (23)array_merge(数组1,数组2,数组3...);----合并多个数组,将多个数组value值依次合并,合为一个数组

     (24)array_slice(数组名,int,int);----从目标数组截取元素,形成一个新数组。开始位置为第二个参数,结束位置为第三个参数。若第三个参数不写,则默认是截取到最后。

     (25)array_splice();----用法同array_slice();但是其截取部分从原数组中删除

     (26)explode("字符依据",目标字符串);----将字符串按照一定的依据拆分成数组

     (27)implode("字符依据",目标数组);----将数组元素按照依据组合成一个字符串

     (28)range(mixed low,mixed high[number step]);----生成数组,例:range(1,100,8);---即从1到100,每8位取一个数,组成一个数组

     (29)shuffle(数组名);----用于将数组进行随机排序

     (30)array_sum(数组名);----对数值型数组元素值进行求和

Python爬虫

一、 爬虫前奏

爬虫实际例子:

  1. 搜索引擎百度谷歌360搜索
  2. 伯乐在线
  3. 惠惠购物助手(爬取各大购物商城的商品历史价格)
  4. 数据分析与研究(数据冰山知乎专栏)
  5. 抢票软件

什么是网络爬虫:
1.通俗理解:爬虫是一个模拟人类请求网站行为的程序,可以自动请求网页、可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。
2.专业介绍:百度百科。

通用爬虫和聚焦爬虫:
1、通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗)的重要组成。主要是将互联网上的网页下载到本地形成一个互联网内容的镜像备份
2、聚焦爬虫:是面向特定需求的一种网络爬虫程序,它与通用爬虫的区别是:聚焦爬虫在实施网页抓取的时候会对内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息

工具:
Python3.6
pycharm 2017 专业版
虚拟环境virtualenv

二、http协议和谷歌抓包工具

一、http超文本传输协议、端口号80.
https:是http协议的加密版本 加了ssl层 端口号443
http请求:get post
输入URL时浏览器发送一个request请求服务器去获取URL的HTML文件 ,返回response文件
network 使用
二、URL的详解(略)
scheme host port(浏览器自动加上端口号) path ?后面的是查询字符串 锚点定位#2.。。。。。 URL编码除英文字母数字和部分字符外全是url编码balabala
三、http请求方式:
get post 的介绍

四、常见响应码:
200 请求正常
301 永久重新定向
302 临时重定向
400 请求的url在服务器上找不到
403 服务器拒绝访问
500 服务器的内部错误
五、常见请求参数:
1、user-agent 浏览器名称
2、referer:
3、cookie:

三、urllib库

1-urllib库之urlopen函数的用法 (获取网页源代码)

encoding:utf-8

from urllib import request

resp = request.urlopen('http://www.baidu.com')
print(resp.read())

readlines() readline() getcode read(size)
2-urlretrieve函数的应用
这个函数可以方便的将网页上的一个文件保存到本地
from urllib import request
reap = request.urlretrieve(‘http://www.baidu.com/’, ‘baidu.html’)
将百度页面保存到本地
在这里插入图片描述

可以用来下载图片等等文件
3、urllib库之参数编码和解码函数
urlencode函数:
用浏览器发送请求,如果URL中包含中文或者其他特殊字符,呢么浏览器会自动进行url编码

from urllib import parse


params = {'name': '张三', 'age': 18, 'greet': 'hello world'}
result = parse.urlencode(params)
print(result)

在这里插入图片描述

例子:

from urllib import request

from urllib import parse


url = 'http://www.baidu.com/s'
params = {"wd": "刘德华"}
qs = parse.urlencode(params)
print(qs)
url = url + "?" + qs
print(url)
resp = request.urlopen(url)
print(resp.read())

parse_qs解码函数的用法:
params = {'name': '张三', 'age': 18, 'greet': 'hello world'} qs = parse.urlencode(params) print(qs) result = parse.parse_qs(qs) print(result)

4、urllib库之urlparse和urlsplit函数用法:
urlparse

from urllib import parse,request


url = 'http://www.baidu.com/s?wd=python&username=abc#3'
result = parse.urlparse(url)
print(result)

url = 'http://www.baidu.com/s?wd=python&username=abc#3'
result = parse.urlparse(url)
print(result)

print('scheme:', result.scheme)
print('netloc:', result.netloc)
print('path:', result.path)
print('query:',result.query)




url = 'http://www.baidu.com/s?wd=python&username=abc#3'
  a = parse.urlsplit(url)
print(a)

urlparse和urlsplit基本是一样的,唯一不一样的地方就是urlparse多了一项params

5、实战用request爬取拉勾网职位信息
request.Request类

6、内涵段子爬虫作业

7、ProxyHander实现代理ip(代理设置)
很多网站会监测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,他会禁止这个IP的访问urllib中通过ProxyHander来设置使用代理服务器,下面代码说明如何使用自定义
handler = request.ProxyHandler(“http://httpbin.org/get”)
opener来使用代理
opener = request.build_opener(handler)
resp = opener.open(“http”)
print(resp.read())
通过代理服务器进行访问实现间接获取

常见代理:
西制免费代理:http://www.xicidaili.com
快代理:http://kuaidaili.com
代理云:http://dailiyun.com/

  • httpbin.org的应用:
    可以查看当前访问外网的IP地址
    在这里插入图片描述
    代码实现不使用代理
resp = request.urlopen('http://httpbin.org/get')
print(resp.read().decode("utf-8"))

不使用代理可以看到当前的IP是本机IP地址。
代码实现使用代理:

url = 'http://httpbin.org/ip'
handler = request.ProxyHandler({"http": "111.196.138.41:57114"})
opener = request.build_opener(handler)
resp = opener.open(url)
print(resp.read())

url = ‘http://httpbin.org/ip’

  1. 使用’urllib.request.ProxyHandler’,转入一个代理,这个代理是一个字典,字典的key依赖于服务器能够接收的类型,一般是“http或者https“
    handler = request.ProxyHandler({“http”:“182.92.113.148:8118”})
  2. 使用上一步创建的handler构建一个opener
    opener = request.build_opener(handler)
  3. 使用opener去发送一个请求
    resp = opener.open(url)
    print(resp.read())

8、cookie原理和格式详解
Set-Cookie:NAME=VALUE;Expires/Max-age=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
参数含义:

  • NAME:cookie的名字
  • VALUE:cookie的值
  • Expires:cookie的过期时间
  • Path:cookie作用的路径
  • Domain:cookie作用的路径
  • SECURE:是否只在http写一下起作用
    9、爬虫使用cookie模拟登陆
    人人网为例。要访问个人的主页,必须先登录才能访问,登录说白了就是要有cookie的信息,呢么用代码的方式登录就必须有cookie的信息才能访问。解决的方法有两种:1、先使用浏览器进行访问,然后将cookie信息复制下来,放到header中。代码如下:
# 不使用cookie访问主页

dapeng_url = "http://www.renren.com/880151247/profile"
headers = {
     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0"
    }
req = request.Request(url=dapeng_url, headers=headers)
resp = request.urlopen(req)

with open('renren.html', 'w') as fp:
    fp.write(resp.read().decode('utf-8'))

在没有cookie的情况下发现不是进入的大鹏的页面而是登录页面

dapeng_url = "http://www.renren.com/880151247/profile"
headers = {
     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0",
     "Cookie":"anonymid=jq0sc577-jnkkr2; depovince=JS; "
              "_r01_=1; ick_login=7de6ecec-8f55-4528-90df-5b9271e49a16; "
              "jebecookies=b9eec176-d2c9-44d3-a498-fddfb2ff5df9|||||; _"
              "de=632B698C8FAFDA942B05F5485F875D6F; p=aa257b76467c304932fd1eb21e5523af0; first_login_flag=1; "
              "ln_uact=13160062997; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif;"
              " t=4a51d052592237c2b2730ef37af5617f0; "
              "societyguester=4a51d052592237c2b2730ef37af5617f0; id=969213220; "
              "xnsid=2540ecc6; loginfrom=syshome; "
              "jebe_key=32231eef-9625-4cc8-8359-72b557b50055%7Cdc2d6da5813981295d39194456729f27%7C1545563220435%7C1%7C1545563220147; "
              "wpsid=15235560196851"

    }
req = request.Request(url=dapeng_url, headers=headers)
resp = request.urlopen(req)

with open('renren.html', 'w',encoding='utf-8') as fp:
    fp.write(resp.read().decode('utf-8'))

使用cookie信息登录

10、爬虫自动登录访问授权页面
http.cookiejar模块:
这模块的主要类有CookieJar、FileCookieJar、MozillaCookieJar
1 CookieJar:管理HTTP cookie值,存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。
2 FileCookieJar:从CookieJar中派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问文件,即只有在需要时才读取文件或在文件中存储数据
3 MozilaCookieJar:从FileCookieJar派生出来,创建与火狐浏览器cookies.txt相兼容的FileCookieJar实例。
4 LWPCookieJar:从FileCookieJar派生而来,创建与libwww-per标准的Set-Cookie3文件格式兼容的FileCookieJar实例
代码:

from urllib import request
from http.cookiejar import CookieJar
from urllib import parse

# 1、登录
# 1.1 创建一个cookieJar对象
cookiejar = CookieJar()
# 1.2 使用cookiejar创建一个HTTPCookieProcess对象
handler = request.HTTPCookieProcessor(cookiejar)
# 1.3 使用上一步创建的handler创建一个opener
opener = request.build_opener(handler)
# 1.4 使用opener发送登录请求(人人网的邮箱和密码)
headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
                  " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3610.2 Safari/537.36"
}
data = {
    'email': "",
    'password': ""
}
login_url = "http://www.renren.com/PLogin.do"
req = request.Request(login_url, data=parse.urlencode(data).encode('utf-8'), headers=headers)
opener.open(req)
# 访问主页
dapeng_url = "http://www.renren.com/880151247/profile"
# 获取个人主页的页面的时候,不要新建一个opener
req = request.Request(dapeng_url, headers=headers)
resp = opener.open(req)
with open('renren.html', 'w', encoding='utf-8')as fp:
    fp.write(resp.read().decode('utf-8'))

11、cookie信息的加载与保存
保存cookie到本地
保存cookie到本地,可以使用cookiejar的save方法,并且需要指定一个文件名:

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request('http://httpbin.org/cookies',headers=headers)

resp = opener.open(req)
print(resp.read())
cookiejar.save(ignore_discard=True,ignore_expires=True)

从本地加载cookie信息

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
cookiejar.load(ignore_expires=True,ignore_discard=True)
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request('http://httpbin.org/cookies',headers=headers)

resp = opener.open(req)
print(resp.read())

四、requests库

1、安装requests和中文文档
中文文档:http://docs.python-requests.org/zh_CN/latest/index.html
github地址:https://github.com/requests/requests
2、发送GET请求:
最简单的发送get请求就是通过requests.get来调用:

response = requests.get("http://www.baidu.com/")
print(response.content.decode('utf-8'))
  print(response.url)
  print(response.encoding)

3、response.text和response.content的区别

  • response.content:是直接从网络上抓取的数据,没有经过任何解码。所也是一个bytes类型,其实在键盘上和网络上传输的字符都是bytes类型。
  • response.text:这个是str的数据类型,是将response.content进行解码的字符串。解码需要指定一个编码方式。所以有的时候可能会猜测错误,就会导致解码产生乱码,这时候就应该使用
response.content.decode('utf-8')

进行手动编码。

5、request发送post请求

import requests

url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    'Referer':'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
    
}

data = {
    'first':'true',
    'kd':'python',
    'pn':1
}
request = requests.post('https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
, data=data, headers=header)
print(request.text)~
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web作业医学资讯网是一个专注于医学领域的在线平台,旨在为用户提供全面和权威的医疗资讯。该网站涵盖了各个医学专业领域的最新研究成果、临床实践指南、健康科普知识等内容。以下是该网站的特点和功能: 1. 多领域覆盖:Web作业医学资讯网涵盖了多个医学领域,包括内科、外科、儿科、妇产科等。用户可以根据自己的需求和兴趣选择浏览相应的专题内容。 2. 最新医学研究成果:网站定期更新最新的医学研究成果和临床试验结果。用户可以了解到最前沿的医学知识和科技进展,及时了解到新的诊断和治疗方法。 3. 临床实践指南:该网站汇集了各个医学领域的临床实践指南,为临床医生提供权威的指导。同时,普通用户也可以从中获取一些建议和参考。 4. 健康科普知识:Web作业医学资讯网还提供了大量的健康科普知识,包括常见疾病的预防和治疗方法、健康饮食、运动保健等。用户可以学习到一些自我保健的方法,提高对健康问题的认知。 5. 互动交流平台:该网站还设置了讨论区和留言板块,用户可以在此发布问题、分享经验,并与其他用户进行交流和讨论。这有助于用户之间的经验交流和相互学习。 总之,Web作业医学资讯网为用户提供了一个全面、权威的医学资讯平台。用户可以通过浏览最新研究成果、学习临床实践指南和健康科普知识,提高对医学的理解和应用能力,以及改善自身的健康状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值