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

Requests聚焦爬虫-数据解析

原理:定位到对应标签,获取标签内的东西

解析三种方法:

    1:正则

58二手房。获取图片列表,二进制content。展开,每个图片是一个内容,正则从头取到尾,不同之处用 .*? 替换掉。

import requests
import re
import os
if __name__ == "__main__":# url='https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2898385373.jpg'# img_data=requests.get(url=url).content# with open("./pic.png","wb") as fp:#    fp.write(img_data)if not os.path.exists("./pictures"):os.makedirs("./pictures")url='https://www.58.com/ershoufang/'#2.进行UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}#获取整个页面数据respond_data=requests.get(url=url,headers=headers).text#获取页面中的 img_class标签中的 src元素。收缩起来该标签  找到上层,然后比较内层异同# <tr>#   <td class="img"><div><a href="//sh.58.com/ershoufang/45319596761223x.shtml" target="blank"><img src="//pic4.58cdn.com.cn/anjuke_58/4b7701ea9d4e5f5ecc7cb87e1d317920"></a></div></td>#   <td class="t"> <a href="//sh.58.com/ershoufang/45319596761223x.shtml" target="_blank" class ="t"> 建元景苑3室2厅1卫高层, 精装修, 满五唯一价</a><br> 廊下--2211133<br>楼层:6/6 ,房龄:年 ,发布时间:12-18 </td>#   <td class="pred"><b>98</b>万</td>#   <td class="pred">3室<br>(2厅1卫)</td>#   <td class="pred"><b>117</b>㎡</td># </tr>ex='<tr>.*?<img src="(.*?)".*?</tr>'#单行匹配img_src_list=re.findall(ex,respond_data,re.S)#print(img_src_list)for img_src in img_src_list:img_src="https:"+img_srcprint(img_src)#图片的二进制文件imgs_data=requests.get(url=img_src,headers=headers).content#生成图片名img_name=img_src.split('/')[-1]imgpath='./pictures/'+img_name+".png"with open(imgpath,"wb") as fp:fp.write(imgs_data)print(img_name+"下载成功")#遗留下  有的图片有?with=190 有的图片末尾有.gif之类的东西。 后续有机会处理下

    2:bs4

嵌套标签 tr td a。获取属性.get和获取文本.text

from bs4 import BeautifulSoup
import requests
import reif __name__ == "__main__":url='https://www.58.com/ershoufang/'headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}# 获取整个页面数据respond_data = requests.get(url=url, headers=headers).contentsoup=BeautifulSoup(respond_data,'lxml')# 获取class值为t 的a标签,class属性需要在最后面加上_# 获取标签内容则.text   -- 建元景苑3室2厅1卫高层,精装修,满五唯一价text=soup.find('a',class_="t").text# 获取标签内特殊属性值      -- //sh.58.com/ershoufang/45319596761223x.shtml# houseurls = soup.select('a', class_="t")#.get("href")# for houseurl in houseurls:#     print(houseurl.get("href"))#上面把不需要的标签,但是符合条件的也拿了#嵌套标签 td[class="t"] 表示class属性为t的td标签houseurls = soup.select('tr > td[class="t"] > a')#.get("href")for houseurl in houseurls:print(houseurl.get("href"))

    3: xpath  (重点)  


http://www.mrgr.cn/news/82807.html

相关文章:

  • ansible-性能优化
  • 跨年烟花C++代码
  • 电路学习(一)之电阻
  • requests中data和json的区别
  • 基于JAVA的私人牙科诊所管理系统
  • Excel | 空格分隔的行怎么导入excel?
  • 服务器双网卡NCCL通过交换机通信
  • 【学Rust开发CAD】2 创建第一个工作空间、项目及库
  • 【SpringSecurity】二、自定义页面前后端分离
  • 鸿蒙APP之从开发到发布的一点心得
  • 前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)
  • 每日AIGC最新进展(80): 重庆大学提出多角色视频生成方法、Adobe提出大视角变化下的人类视频生成、字节跳动提出快速虚拟头像生成方法
  • 医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
  • ISP图像调优流程
  • Unity中 Xlua使用整理(一)
  • 数组和指针
  • jenkins入门6 --拉取代码
  • 5G学习笔记之SNPN系列之网络选择
  • 在K8S上部署OceanBase的最佳实践
  • <OS 有关> DOS 批处理命令文件,用于创建 python 虚拟机,并进入虚拟机状态执行后继命令 判断虚拟机是否存在,在批处理文件中自定义 虚拟机名字
  • ffmpeg 常用命令
  • day01_ Java概述丶开发环境的搭建丶常用DOS命令
  • selenium合集
  • 【C++】const关键字_运算符重载_继承
  • 基于深度学习的视觉检测小项目(七) 开始组态界面
  • 141.《mac m系列芯片安装mongodb详细教程》