X_path 爬虫

在这里插入图片描述
xpath(‘node’) 选取了 node 节点的所有子节点;
xpath(’/div’) 从根节点上选取 div 节点;
xpath(’//div’) 选取所有的 div 节点;
xpath(’./div’) 选取当前节点下的 div 节点;
xpath(’…’) 回到上一个节点;
xpath(’//@id’) 选取所有的 id 属性;
xpath(’//book[@id]’) 选取所有拥有名为 id 的属性的 book 元素;xpath(’//book[@id=“abc”]’) 选取所有 book 元素,且这些 book 元素拥有 id= "abc"的属性;
xpath(’//book/title | //book/price’) 选取 book 元素的所有 title 和 price 元素。
使用 XPath 定位,你会用到 Python 的一个解析库 lxml。这个库的解析效率非常高,使用起来也很简便,只需要调用 HTML 解析命令即可,然后再对 HTML 进行 XPath 函数的调用。


from lxml import etree
html = etree.HTML(html)
result = html.xpath('//li')

在这里插入图片描述

SSL双向认证是一种安全机制,可以在客户端和服务器之间建立安全通信。在应用程序开发和爬虫抓包中,也可以使用SSL双向认证来加强安全性。以下是两种常见的方法: 1. 使用证书文件 在应用程序和爬虫中,可以使用证书文件来进行SSL双向认证。客户端和服务器之间交互时,需要客户端向服务器发送证书(通常是PEM格式的文件),证明自己的身份。服务器会验证证书的合法性,如果通过验证,就可以建立安全连接。在Python中,可以使用requests库来实现SSL双向认证。示例代码如下: ```python import requests # 客户端证书文件路径 client_cert = '/path/to/client/cert.pem' # 客户端私钥文件路径 client_key = '/path/to/client/key.pem' # 服务器证书文件路径 server_cert = '/path/to/server/cert.pem' # SSL双向认证 response = requests.get(url, cert=(client_cert, client_key), verify=server_cert) ``` 2. 使用OpenSSL工具 另一种常见的方法是使用OpenSSL工具进行SSL双向认证。在Linux和Mac系统中,可以使用openssl命令来生成证书和私钥文件。在Windows系统中,可以下载OpenSSL工具并安装。生成证书和私钥文件后,可以在应用程序和爬虫中使用。示例代码如下: ```python import subprocess # 生成客户端证书和私钥文件 subprocess.run(['openssl', 'req', '-newkey', 'rsa:2048', '-nodes', '-keyout', 'client.key', '-x509', '-days', '365', '-out', 'client.crt', '-subj', '/CN=client']) # 生成服务器证书和私钥文件 subprocess.run(['openssl', 'req', '-newkey', 'rsa:2048', '-nodes', '-keyout', 'server.key', '-x509', '-days', '365', '-out', 'server.crt', '-subj', '/CN=server']) ``` 在应用程序中,可以使用SSLContext对象来进行SSL双向认证。示例代码如下: ```python import ssl import socket # 客户端证书和私钥文件路径 client_cert = '/path/to/client/cert.pem' client_key = '/path/to/client/key.pem' # 服务器证书文件路径 server_cert = '/path/to/server/cert.pem' # SSLContext对象 context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) context.load_cert_chain(certfile=client_cert, keyfile=client_key) context.load_verify_locations(cafile=server_cert) # 建立SSL连接 with socket.create_connection((host, port)) as sock: with context.wrap_socket(sock, server_hostname=host) as ssock: ssock.sendall(b'Hello, world!') ``` 以上是两种常见的SSL双向认证方法,可以根据实际需求选择适合自己的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任任任任小娇在学python的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值