爬取网站内容,查看到图书信息都是子啊’div’的标签中,并包含
“class=“bk_show_info”
属性,因此调用BeautifulSoup对象的find_all()
方法进行查找时,可用语句”bsObj.find_all("div",{'class':'bk_show_info'})“
实现,然后再通过遍历查找找到的内容列表,取出有用的信息进行输出。
from bs4 import BeautifulSoup # BeautifulSoup
import requests # 导入requests
# 定义一个getHtml()函数,根据填写的url参数获取数据
def getHtml(url):
# 异常处理
try:
r = requests.get(url) # 使用get函数打开指定的url
r.raise_for_status() # 如果状态不是200,则引发异常
r.encoding = 'utf-8' # 更改编码方式
return r.text # 返回页面内容
except:
return "" # 发生异常返回空字符串
# 定义数据解析函数,用于招到符合条件的数据并输出
def getcon(html):
bsObj = BeautifulSoup(html) # 将html对象转化为BeautifulSoup对象
# 找到所有class为bk_show_info的div,只获取图书信息
divList = bsObj.find_all("div", {'class': 'bk_show_info'})
allbook = [] # 存储全部数据,二维列表
for divs in divList:
book_info = [] # 存储单本图书信息,一维列表
book_name = divs.h4['data-name'] # 获取图书名称
book_info.append(book_name) # 将图书名称存储到
p_list = divs.find_all('p') # 查找单本图书的其他信息(再p标签中)
for p_content in p_list:
book_info.append(p_content.string) # 将单本图书的信息存入allbook
allbook.append(book_info)
# 输出获取到的图书信息
for book in allbook:
print(book)
html = getHtml("http://bjjqe.com") # 调用获取页面内容函数
getcon(html) # 调用解析数据函数
本文地址:https://blog.csdn.net/qq_44364832/article/details/107351803