Beautiful Soup的一些语法和爬虫的运用

2023-04-27 14:59:18 浏览数 (1)

简介

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

一个简单案例

该案例使用Beautiful Soup简单爬取一个京东的网页数据

代码

代码语言:javascript复制
import requests
from bs4 import BeautifulSoup
import pandas as pd
import openpyxl

#请求网站,获取到网页资源
date=requests.get("https://search.jd.com/Search?keyword=休闲鞋&enc=utf-8&wq=休闲鞋&pvid=04a7485c9360491bbb049acec91927e4")
#对网页资源进行解析
soup=BeautifulSoup(date.content,"html.parser")
#对网页资源进行补全和格式化
soup.prettify()
#获取到单个商品的div
list=soup.find_all("div",class_="gl-i-wrap")


#新建一个数组,保存鞋子的信息
arr=[]
for i in list:
    #获取鞋子的名字
    list_name=(i.find_all("div",attrs={"class","p-name"}))[0].find_all("em")[0].get_text()
    #获取鞋子的价格
    list_price=(i.find_all("div",attrs={"class","p-price"}))[0].find_all("i")[0].get_text()
    #获取鞋子的图片链接
    list_img=(i.find_all("div",attrs={"class","p-img"}))[0].find_all("img")[0].get("data-lazy-img")
    #将获取到的信息添加到数组中
    arr.append([list_name,list_price,list_img])
 
#新建一个pandas的数据,并往其中填入arr数组的内容
excel=pd.DataFrame(arr,columns=["鞋名","价格","图片链接"])
#将pandas数据转化为Excel表格,并在本地保存
excel.to_excel("demo1.xlsx",sheet_name='demo1',index=False)

Excel文件

Beautiful Soup的一些语法

  • 获取标签的属性: soup.find("img").get("data-lazy-img")
  • 获取标签的内容: soup.find("img").get_text()
  • 获取所有的 div 标签: soup.find_all("div")
  • 获取所有的 div 标签(限定其属性): soup.find("div", attrs = {"class":"p-price"})
  • 查找一个元素: soup.find()
  • 查找一组元素: soup.find_all("div")
  • 将素组存为文件: pandas.DataFrame(_array).to_csv("./phone_info.csv")

tips: find和find_all方法的区别,find方法返回第一个匹配到的对象,而find_all返回所有匹配到的对象,是一个列表

0 人点赞