BeautifulSoup+requests爬取产品成分表

以下省去安装(BeautifulSoup、request)模块的安装步骤

1、首先我们要打开产品所在的web

BeautifulSoup+requests爬取产品成分表

2、按下F12,点击network找到产品成分表所在的请求中,以下可以看出全部信息都是嵌在一个html网页里面

BeautifulSoup+requests爬取产品成分表

3、然后我们需要找到request url和request headers

BeautifulSoup+requests爬取产品成分表

4、点击左上角的图标查找元素可以发现,每一个我们要找的成分元素都是在<td class="td1">里面的

BeautifulSoup+requests爬取产品成分表

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()

结果如下

BeautifulSoup+requests爬取产品成分表

以上适合那种响应返回内容是html格式的,使用BeautifulSoup可以省去很多麻烦,或者也可以使用正则表达式