当前位置: 首页 > news >正文

3.20爬虫基础速看

request库

post 方法 在提请求前要提交数据,get方法不用。

post 提交的方法有时候需做数据格式转换,例如 json.dump(data, fp, separators=(',', ':'))。

写法什么的就略过不讲。post方法传payload的时候,载荷用参数json,表单用get。

证书校验过不去的时候,在请求的时候,加参数,verify = false。

使用session 请求,可以避免重复发送cookie。

数据提取,

可以把数据转成json,通过读取字典和列表的数据将所需数据保存下来。

xpath,根据html结构提取html里的信息。

语法说明
//从任意位置查找(全局搜索)
/从根节点 / 当前节点的直接子节点查找
.当前节点
..父节点
*匹配任意节点
from lxml import etree text = """ <div> <ul> <li class="item-1"><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> """ # 1. 需要将html格式代码转为python可以认识的对象 tree = etree.HTML(text) # print(tree) # 2. 提取符合条件的数据 li_a_link = tree.xpath("//li[@class='item-1'/a/@href]") li_a_link = tree.xpath("//li[@class='item-1'/a/text()]")

一般html 会包含很多数据,有很多标签.常用方法可以是通过路径去提取。

from lxml import etree html = """ <div class="container"> <div class="item"> <h3 class="title">华为手机</h3> <p class="price">3999元</p> <a href="/detail/123.html">查看详情</a> </div> <div class="item"> <h3 class="title">小米耳机</h3> <p class="price">299元</p> <a href="/detail/456.html">查看详情</a> </div> </div> """ # 把 HTML 转成可解析对象 tree = etree.HTML(html) # ============================================= # 【最常用方法 1】获取所有商品名称 # ============================================= titles = tree.xpath('//div[@class="item"]/h3/text()') print("商品名称:", titles) # 输出:['华为手机', '小米耳机'] # ============================================= # 【最常用方法 2】获取所有商品价格 # ============================================= prices = tree.xpath('//div[@class="item"]/p[@class="price"]/text()') print("商品价格:", prices) # 输出:['3999元', '299元'] # ============================================= # 【最常用方法 3】获取所有详情链接 # ============================================= urls = tree.xpath('//div[@class="item"]/a/@href') print("详情链接:", urls) # 输出:['/detail/123.html', '/detail/456.html'] # ============================================= # 【最常用方法 4】循环提取每一个完整商品 # ============================================= print("\n===== 逐个提取商品 =====") items = tree.xpath('//div[@class="item"]') # 先拿到所有商品块 for item in items: # 在当前 item 内部继续提取(相对路径) title = item.xpath('.//h3/text()')[0] price = item.xpath('.//p/text()')[0] url = item.xpath('.//a/@href')[0] print(f"商品:{title} | 价格:{price} | 链接:{url}")

如果想去锻炼自己可以拿豆瓣电影 Top 250这个网址试试手

from lxml import etree import requests url="https://movie.douban.com/top250" headers={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0" } response=requests.get(url,headers=headers) tree = etree.HTML(response.text) content = tree.xpath('//div[@class="bd"]/p/text() | //span[@class="title"]/text()') def clean (content): clean_list = [] result = [] for item in content: clean_text = item.replace("\xa0", " ").replace("\n", " ").strip() if clean_text: clean_list.append(clean_text) for i in range(0,len(clean_list)): if clean_list[i].startswith("/"): clean_list[i-1] = clean_list[i-1] + clean_list[i] clean_list[i] = "" clean_list = [item for item in clean_list if item] for i in range(0,len(clean_list)-2,3): title = clean_list[i] d = clean_list[i+1] d2 = d.split("导演:")[1].split("主演:")[0].strip() ind = d.find("主演:") d3 = d[ind+4:].strip() t = clean_list[i+2] result.append({'电影':title,'导演':d2,'主演':d3,'类型':t}) return result clean_list = clean(content) print(clean_list)

贴一个我写的

另外xpath 也是有插件的,比较方便获取xpath XPath Helper_2.0.2_Chrome插件下载_极简插件

用下来效果是这样的

xpath 就学到这里

http://www.jsqmd.com/news/511944/

相关文章:

  • 策———人工智能
  • 对不起,真的再见了,这次再见也许就是永别了
  • 最近在研究基于扰动观测器的直流电机调速系统,发现这玩意儿挺有意思的。先不说那些复杂的理论,直接上点干货,看看怎么用代码和仿真模型来实现这个系统
  • 【ASP.NET Web Pages】页面布局核心实战:从复用性到安全性,打造一致化网站界面
  • 科哥Face Fusion人脸合成:老照片修复新方法,让记忆重获清晰
  • 嵌入式OTA升级异常恢复实战手册(C语言底层原子性保障深度剖析)
  • 10.9级、12.9级高强度紧固件如何进一步提升性能?FES上海紧固件展
  • 长芯微LD9652完全P2P替代AD9652,16位、310 MSPS、3.3/1.8 V双通道模数转换器(ADC)
  • C语言形式化验证避坑清单:23个真实项目失败案例暴露的6类典型建模漏洞
  • 运维人中间危机,我转型网安的逆袭之路,别慌有出路
  • 盘点JDK18的新特性:实用升级+前沿预览,Java开发者必看
  • 472KB的效率革命:特殊字符输入器的极简设计哲学与用户体验
  • Java 流程控制与循环结构笔记
  • 2026年精益管理咨询公司推荐:制造企业降本增效实战派与系统化解决方案深度解析 - 十大品牌推荐
  • Odoo 19 库存模块之期初库存导入概述
  • 全球主流军衔的等级系统
  • ABAQUS模拟:盾构隧道下穿既有隧道,涉及盾壳、注浆层、注浆压力与衬砌
  • 遥感图像处理:DDColor在卫星影像中的应用
  • 第一章:SRv6简介
  • 2026年企业办公云盘哪家强?盘点11款主流工作云盘(附深度测评)
  • 威纶通触摸屏模板,直接打开就可以用,可根据自己要求修改, 威纶通触摸屏,全部图库
  • Dify生产环境Token成本黑洞排查实录(附官方未公开的token_usage_hook调试接口与离线审计工具)
  • RevokeMsgPatcher终极教程:3分钟破解微信QQ消息撤回限制
  • Claude 4 vs GPT-4o:AI辅助开发场景下的技术选型与实战指南
  • 赶考小状元学习机为什么比科大讯飞学习机更受欢迎:从测评到管控的全面胜出
  • 精益管理咨询公司如何选不踩坑?2026年靠谱推荐聚焦生产制造领域且实战派机构 - 十大品牌推荐
  • 驱动一个AIP650、数码管、按键、LED、红外、蜂鸣器控制板
  • 极致的效率等于极致的脆弱
  • 企业云盘哪个好用?2026年18款网盘全面测评
  • Linux 日志审计实战:快速发现入侵痕迹,打造服务器监控体系本文接上一篇:Linux 系统服务安全:从入门到实战,守护你的服务器安全