BeautifulSoup+requests爬取产品成分表
以下省去安装(BeautifulSoup、request)模块的安装步骤
1、首先我们要打开产品所在的web
2、按下F12,点击network找到产品成分表所在的请求中,以下可以看出全部信息都是嵌在一个html网页里面
3、然后我们需要找到request url和request headers
4、点击左上角的图标查找元素可以发现,每一个我们要找的成分元素都是在<td class="td1">里面的
5、因此我们整理思路如下:
a、首先将request url找出来
b、然后把request header找出来
c、然后把成分所在的位置找出来<td class="td1">
d、最后将所有的成分全部打印出来
5、根据步骤4的思路我们就可以开始码代码了
# -*- coding:utf-8 -*
#导入模块
from bs4 import BeautifulSoup
import requests
#定义一个名叫 ingredients_print的函数
def ingredients_print():
#做异常处理
try:
#以header的形式发送url
headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'}
#发送url
res=requests.get("https://www.bevol.cn/product/ef54e40426bc36c50e9f0719c8b4bcdd.html",headers=headers)
#这里是为了防止打印出来的文本为乱码
res.encoding='utf-8'
#获取响应返回的文本
content=(res.text)
#把刚刚保存在content中的文件放入Beautiful Soup中,并创建Beautiful Soup对象
soup=BeautifulSoup(content,'lxml')
all=soup.find_all(class_= 'td1')#class为关键字,因此需要加下划线才能把想要的过滤出来
#print(all)
for ingredients in all:
each_ingredient=ingredients.string#这里有一个打印string的用法,这样就可以把全部的成分打印出来
print(each_ingredient)
except:
print("打印成分表失败")
if __name__=="__main__":
ingredients_print()
结果如下
以上适合那种响应返回内容是html格式的,使用BeautifulSoup可以省去很多麻烦,或者也可以使用正则表达式