python爬虫项目01

一、Python开发环境

1、Python开发环境搭建

python是一种跨平台的计算机语言,是一种解释型、面向对象和动态数据的高级程序设计语言。

  • python3.x设计理念更加高效合理和人性化,代码开发和运行效率更高。
  • python2.x不同于python3.x,互相有很多用法不兼容。

Python语言特点:

  • 开源、免费、功能强大。
  • 语法简单清晰,强制用空白符作为语句缩进。
  • 具有丰富和强大的库。
  • 是解释型语言,变量类型可变类似于JavaScript。
  • 易读、易维护,用途广。

主流开发工具与环境:

  1. Python自带开发环境

    官网::https://www.python.org/downloads/windows
    简单

  2. PyCharm与Python开发环境

    官网:http://www.jetbrains.com/pycharm/
    下载免费版本:pycharm community

  3. Anaconda与Python开发环境

    官网:https://www.continuum.io/downloads
    功能强大,本次使用该开发环境

二、Flask Web网站

》Python有很多web开发工具,flask是其中一个非常容易的框架。

1、flask安装

win+R打开cmd,输入pip install flask

2、编写一个简单的flask服务器

#coding=gbk
# 导入flask程序包
import flask
# 初始化flask对象,参数__name__是程序的名称
app=flask.Flask(__name__)
@app.route("/")
def hello():
  return "你好"

@app.route("/hi")
def hi():
  return "hi,你好"

if __name__=="__main__":
  app.run()

运行上述代码控制台显示如下图:

python爬虫项目01_第1张图片

然后在浏览器输入上图中的网址:

  • 输入http://127.0.0.1:5000/ ——>显示:你好
    python爬虫项目01_第2张图片

  • 输入http://127.0.0.1:5000/hi ——>显示:hi,你好

    python爬虫项目01_第3张图片

3、自己写一个静态网页,然后分别用服务器和客户端访问该网页

  1. index.html实现

    DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
    head>
    <body>
        <h1>Welcome Python flask Webh1>
        It is very easy to make a website by python Flask.
    body>
    html>
    
  2. 用server.py启动web服务,读取index.html页面

    import flask
    app=flask.Flask(__name__)
    @app.route("/")
    def index():
      try:
        fobj=open("index.html","rb")
        data=fobj.read()
        fobj.close()
        return data
      except Exception as err:
        return str(err)
    
    if __name__=="__main__":
      app.run()
    

    python爬虫项目01_第4张图片
    3.用client.py作为一个客户端访问index.html访问页面

**注意:**client.py是作为一个客户端从server.py这个服务器上读取信息的

import urllib.request
url="http://127.0.0.1:5000"
resp=urllib.request.urlopen(url)
data=resp.read()
html=data.decode()
print(html)

python爬虫项目01_第5张图片

三、GET方法访问网站

访问网站最常用的一种方法是GET方法,这种方法主要是从客户端从服务器获取网站数据,如果有交互,客户端把参数附加到网址后面向服务器提供参数,服务器根据不同的参数做出不同的响应。

  1. 客户端GET方式发送数据

    GET方式发送的数据附加在URL后面,在URL之后用一个“?”连接,数据采用:“名称1=值1&名称2=值2······”

    import urllib.request
    url="http://127.0.0.1:5000"
    p="广东"
    c="深圳"
    p=urllib.parse.quote(p)#对汉字进行编码UTF-8
    c=urllib.parse.quote(c)
    data="province="+p+"&city="+c
    resp=urllib.request.urlopen(url+"?"+data)
    data=resp.read()
    html=data.decode()
    print(html)
    

    python爬虫项目01_第6张图片

  2. 服务器获取GET发送的数据

    服务器用Flask中的request对象的args来存储GET参数,用get方法获取参数。

    import flask
    app=flask.Flask(__name__)
    @app.route("/")
    def index():
        try:
            '''
            如果province有传递来的值,则获取传过来的具体值
            如果province没有传递的值,则province将获取到一个空值“”
            '''
            province=flask.request.args.get("province")
            city=flask.request.args.get("city")
            return province+","+city
        except Exception as err:
            return str(err)
    
    if __name__=="__main__":
        app.run()
    
    

python爬虫项目01_第7张图片

四、POST方法向网站发送数据

1、POST发送数据

  1. 客户端POST发送数据
    POST方法访问网站时客户端向服务器发送表单数据,表单数据组织方式与GET方法参数列表相似,结构:“名称1=值1&名称2=值2······”

    #客户端POST发送数据
    import urllib.parse
    import urllib.request
    url="http://127.0.0.1:5000"
    try:
        province=urllib.parse.quote("广东")
        city=urllib.parse.quote("深圳")
        data="province="+province+"&city="+city
        data=data.encode()
        html=urllib.request.urlopen(url,data=data)
        html=html.read()
        html=html.decode()
        print(html)
    except Exception as err:
        print(err)
    

    python爬虫项目01_第8张图片

  2. 服务器获取POST数据
    服务器用Flask中的request对象的form来存储POST的参数,用get方法获取参数

    #服务器获取POST数据
    import flask
    app=flask.Flask("__name__")
    @app.route("/",methods=["POST"])
    def index():
        try:
            province=flask.request.form.get("province")
            city=flask.request.form.get("city")
            return province+","+city
        except Exception as err:
            return str(err)
    
    if __name__=="__main__":
        app.run()
    

    python爬虫项目01_第9张图片

2、GET与POST混合使用

  1. 服务器获取数据
import flask
app=flask.Flask(__name__)
@app.route("/",methods=["GET","POST"])
def index():
    try:
        province=flask.request.args.get("province")
        city=flask.request.args.get("city")
        note=flask.request.form.get("note")
        return province+","+city+"\n"+note
    except Exception as err:
        print(err)

if __name__=="__main__":
    app.run()

python爬虫项目01_第10张图片
代码优化: 用values替换args和form

import flask
app=flask.Flask(__name__)
@app.route("/",methods=["GET","POST"])
def index():
    try:
        province=flask.request.values.get("province")
        city=flask.request.values.get("city")
        note=flask.request.values.get("note")
        print(province+"\n"+city+"\n"+note)
        return province+","+city+"\n"+note
    except Exception as err:
        print(err)

if __name__=="__main__":
    app.run()
  1. 客户端发送数据
import urllib.parse
import urllib.request
url="http://127.0.0.1:5000"
note="深林人不知,明月来相照"
province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
try:
    note="note="+urllib.parse.quote(note)
    param="province="+province+"&city="+city
    html=urllib.request.urlopen("http://127.0.0.1:5000?"+param,data=note.encode())
    html=html.read()
    html=html.decode()
    print(html)
except Exception as err:
    print(err)

python爬虫项目01_第11张图片

你可能感兴趣的:(Python,flask,python,前端)