Python爬虫之利用xpath爬取ip代理网站的代理ip

本文介绍了Python中requests库的使用,包括HTTP请求、响应状态码和编码处理。接着讲解了XPath在XML和HTML文档中的应用,以及lxml库的安装和基本操作。通过实例展示了如何利用XPath选择特定节点和属性。最后,演示了一个爬取IP代理网站的示例,包括处理编码问题、提取IP和筛选有效代理的过程,以及如何爬取多页数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫工具

python3 pycharm edge/chrome

requests库的用法

requests库是python中简单易用的HTTP库
用命令行安装第三方库 pip install requests
导入库import requests
获取响应内容

import requests
r = requests.get('http://www.baidu.com/')
print("文本编码:", r.encoding)  # ISO-8859-1
print("响应状态码:", r.status_code)
# print ("字符串方式的响应体:", r.text)
# 响应体乱码解决
print("字符串方式的响应体:", r.text.encode('ISO-8859-1'))
xpath的用法

xpath可以在XML文档中查找信息,在XML中通过元素和属性进行定位
常用的表达式

表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取(取子节点)。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点
选取当前节点的父节点
@ 选取属性

谓语

路径表达式
//table/tbody/tr table标签下的tbody标签下的所有tr节点
//a/@src 选取a标签下的src属性
//div[@class=“box”] 选取class="box"的div节点
使用lxml解析

安装pip install lxml
导入库from lxml import etree
lxml将_html_文本转换为_xml_对象
实例化一个**etree**对象,且将解析的源码加载到该对象中

tree = etree.HTML(html)
# result = etree.tostring(tree) 补全html的基本写法
#                               比如补全缺少的结束标签   
xpath中的 text(), string(), data()的区别如下:
  • text()仅仅返回所指元素的文本内容
  • string()函数会得到所指元素的所有节点文本内容,这些文本会被拼接成一个字符串.
  • data()大多数时候和string()通用不建议经常使用.(可能会影响性能)
基本使用
from lxml import etree
wb_data = """
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a>
             </ul>
         </div>
        """
html = etree.HTML(wb_data)
print(html)
result = etree.tostring(html)
print(result.decode("utf-8"))

输出

<Element html at 0x1cf63c799c8>
<html><body><div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class=<
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值