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

03、爬虫数据解析-bs4解析/xpath解析

一、bs4解析

使用bs4解析,需要了解一些html的知识,了解其中一些标签。

安装:pip install bs4

导入:from bs4 import BeautifulSoup

1、使用方式

1、把页面源代码交给BeautifulSoup进行处理,生成bs对象

2、从bs对象中查找数据

(1)find(标签,属性=值):找第一个

(2)findall(标签,属性=值):找全部的

2、实战:拿到上海菜价网蔬菜价格

1、思路

(1)拿到源代码

(2)使用bs4进行解析,拿到数据

2、演示

from bs4 import BeautifulSoup
import requests
import csv#拿到数据
url = "http://www.shveg.com/cn/info/list.asp?ID=959"reps = requests.post(url)
reps.encoding="gb2312"
f = open("菜价.csv",mode="w",encoding="utf-8")
csvwriter = csv.writer(f)#解析数据
#1、把页面源代码交给BeautifulSoup进行处理,生成bs对象。
#2、从bs对象中查找数据
page = BeautifulSoup(reps.text,"html.parser")#html.parser指定html解析
table = page.find("td", attrs={"class":"intro_font"})
trs = table.find_all("tr")[1:]
for tr in trs:tds = tr.find_all("td")name = tds[0].textcsvwriter.writerow(name)
print("over")
reps.close()

3、实战:抓取优美图库图片

(1)需求:拿到优美图库图片的下载地址

(2)思路

a.拿到主页面的源代码,然后提取到子页面的链接地址,href

b.通过href拿到子页面的内容,从子页面找到图片的下载地址,src属性

c.下载图片

import requests
from bs4 import BeautifulSoupurl = "https://www.umei.cc/bizhitupian/weimeibizhi/"
resp = requests.get(url)
resp.encoding="utf-8"main_page = BeautifulSoup(resp.text,"html.parser")
alist = main_page.find("div",attrs={"class":"item_list infinite_scroll"}).find_all("a")
for a in alist:href = "https://www.umei.cc/"+a.get('href')child_page_resp = requests.get(href)child_page_resp.encoding="utf-8"child_main_page = BeautifulSoup(child_page_resp.text,"html.parser")img = child_main_page.find("div",attrs={"class":"big-pic"}).find("img")src = img.get("src")#下载图片img_resp = requests.get(src)# img_resp.content   #这里拿到的是字节img_name = src.split("/")[-1] #拿到url中的最后一个/以后的内容with open(img_name,mode="wb") as f:f.write(img_resp.content) #图片的内容写入文件print("over")
resp.close()
child_page_resp.close()

二、xpath解析

安装:pip install lxml

导入:from lxml import etree

1、使用方式

tree = etree.parse(html文件)

result = tree.xpath("xpath语法")

2、实战:拿到中国食品网的新闻信息

from lxml import etree
import requestsurl = "http://food.china.com.cn/node_8003189.htm"
resp = requests.get(url)#解析
tree = etree.HTML(resp.text)
divs = tree.xpath('/html/body/div[2]/div[3]/div[1]/div[2]/div[@class="d3_back_list"]')for div in divs:title = div.xpath("./p/a/text()")summary = div.xpath("./span/text()")time = div.xpath("./b/text()")print(title)print(summary)print(time)
resp.close()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 套接字选项、广播和组播
  • 【elasticsearch实现优先展示连词并按某个字段折叠显示最新一条】
  • 代码片段管理的终极助手:MassCode
  • 参数化的艺术:Postman中API测试用例的动态构建
  • DP学习——享元模式
  • javascript deriveKey和deriveBits()由主密钥派生出新的密钥进行加密
  • git--本地仓库修改同步到远程仓库
  • 基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
  • SPSS个人版是什么软件
  • qt--做一个拷贝文件器
  • 深入理解Spring依赖注入与生命周期管理
  • 取消Idea文件夹的自动合并操作!
  • Unity C#底层原理(二)
  • 【BUG】已解决:No Python at ‘C:Users…Python Python39python. exe’
  • Tomcat响应数据过程
  • [数据结构]链表的实现在PHP中
  • [译]Python中的类属性与实例属性的区别
  • 0基础学习移动端适配
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • java多线程
  • markdown编辑器简评
  • PV统计优化设计
  • Python进阶细节
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue学习第二天
  • 区块链共识机制优缺点对比都是什么
  • 深度学习入门:10门免费线上课程推荐
  • 深入浏览器事件循环的本质
  • 学习HTTP相关知识笔记
  • 移动端 h5开发相关内容总结(三)
  • 移动端唤起键盘时取消position:fixed定位
  • 原生 js 实现移动端 Touch 滑动反弹
  • Python 之网络式编程
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​插件化DPI在商用WIFI中的价值
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ## 基础知识
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (20050108)又读《平凡的世界》
  • (31)对象的克隆
  • (4)STL算法之比较
  • (arch)linux 转换文件编码格式
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)mysql_MYSQL(三)
  • (四)事件系统
  • (转)Linux下编译安装log4cxx
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net SqlSugarHelper
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表