实战5.Python制作查询工具+Xpath打印出现乱码的问题

一、Xpath路径的查找以及打印时遇到的乱码问题

1、Xpath路径的查找

假如你要查找图中中国移动的Xpath路径,你可以通过以下方法进行查找

点击中国移动,然后右击鼠标,将光标移到Copy处,找到Copy Xpath并点击,你即可得到中国移动的绝对Xptah路径

/html/body/div/div[2]/div[2]/div[2]/div[2]/div[2]/table/tbody/tr[3]/td[2]/a

也可以手动修改为//table/tbody/tr[3]/td[2]/a

原因如下:

此时的路径仅仅时包含中国移动而已,如要包含其他,则要适当修改层级参数

你也可以参考以下示例查找

从所有标签中找到含有属性class=’img’的一个节点,//img/@data-orginal:进入img的标签夹找到属性为data-orgina的值

2、Xpath数据提取出现的打印问题

一般跟着视频教程来走,有时候会出现以下问题

而解决这个问题的方法,在个别博主中是直接在Xpath路径的后面加上/text(),但是有时候会只打印出一些字典中的分割符,此时表面Xpath路径与实际解析内容的路径有偏差

这时,就要将Copy Xpath鱼/text()结合进行解码,因为往往手动输入的Xpath路径都不太准确

二、Flash模块的注意事项

1、flask模块的介绍

Flask是一个轻量级的Web应用框架,使用Python编写。它提供了一些工具和库,使得开发Web应用变得更加容易和快速。下面是一个简单的Flask应用程序示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

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

这个应用程序定义了一个名为的Flask实例,并使用装饰器将函数绑定到根URL上。当用户访问根URL时,函数将被调用并返回“Hello, World!”字符串。app@app.route('/')hello_world()hello_world()

Flask还提供了许多其他功能,例如模板引擎、表单处理、数据库集成等等。可以通过Flask官方文档来学习更多内容。

http://127.0.0.1:5000  http://127.0.0.1:访问到我们自己这台笔记本,:5000表示定位到正在打开运行的代码这个服务上来

2、@app.route('/')与@app.route('/search_phone')的区别

@app.route('/')是http://127.0.0.1:5000默认初始访问的页面,
@app.route('/search_phone')是指定访问的路径,访问链接写为:http://127.0.0.1:5000/search_phone

当有若干个@app.route('/')时,默认访问页面会以先执行的方式确认,如:

3、flash书写代码格式要严谨

跑web服务,注意,要在app = Flask(__name__)与app.run()之间包含返回网页的数据的函数,不然会Not Found

4、创建HTML时注意的问题

创建html文件时他的目录要写死,写成templates。

如果不写死,则要进行以下操作

否则

其他方面:如果出现Flask '....html' not Found
请检查下面几点:
1、项目下面要有templates文件夹,html文件要放进里面;
2、templates文件夹要和运行的py文件在同一级目录;
3、render_template('***.html')这里面的名字要正确;
4、app = Flask(__name__, template_folder='templates') template_folder必须是templates;
5、static为静态资源文件夹,必须跟templates同一级位置

三、完整代码以及运行结果

1、.py文件

#pip install lxml  解析数据模块
import requests
from lxml import etree
"""
flask提供web服务的模块

注意区分import requests;from flask import request
import requests :想服务器发送请求的模块
from flask import request:向自己建立的服务器发送请求的模块
"""
from flask import Flask,render_template,request
app = Flask(__name__) #创建一个可以支持web应用的对象


def get_mobile(phone):
    #发送请求地址
    url = f'https://www.ip138.com/mobile.asp?mobile={phone}&action=mobile'

    #伪装
    hearders = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
    }
    #发送请求
    respond = requests.get(url,headers=hearders)

    #手动设置编码格式
    respond.encoding = 'utf-8'

#    print(respond.text)

    #解析数据
    e = etree.HTML(respond.text)

    #编写Xpath提取数据
    datas = e.xpath('//tbody/tr/td[2]/a/text()')
    return datas

"""
    for p in datas:
        text = p.text
        print(text)
"""
get_mobile(18776352560)

@app.route('/')  #如果有若干个声明@app.route('/') ,则会按照先执行先默认的方式来确定默认访问界面
def index():
    return render_template('index.html')

#写成这样是默认访问的主页  @app.route('/')    建立路由
@app.route('/search_phone')  #你也可以写成这样@app.route('/search_phone'),但要在http://127.0.0.1:5000加上/search_phone
def search_phone():
    phone = request.args.get('phone')
    data = get_mobile(phone)
    return '<br/>'.join(data)#<br/>换行,''.join字符串连接


app.run(debug=True)  #跑web服务,注意,要在app = Flask(__name__)与app.run()之间包含返回网页的数据,不然会Not Found

2、.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/search_phone" method="get">
        手机号:<input type="text" name="phone" id="">
        <input type="submit" value="查询">
    </form>
</body>
</html>

3、运行结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值