美文网首页
python爬虫3:beautifulsoupp实践

python爬虫3:beautifulsoupp实践

作者: Iphone60Plus | 来源:发表于2020-05-02 18:35 被阅读0次

当用text提取纯文本时,获取标签内所有纯文本信息

from bs4 import BeautifulSoup
bs = BeautifulSoup('<p><a>惟有痴情难学佛</a>独无媚骨不如人</p>','html.parser')
tag = bs.find('p')
print(tag.text)
#惟有痴情难学佛独无媚骨不如人

父标签只能提取自身的属性值,不能提取子标签的属性值

from bs4 import BeautifulSoup
bs = BeautifulSoup('<p><a href=\'https://www.pypypy.cn\'></a>哈哈哈~</p>','html.parser')
tag = bs.find('p')
print(tag['href'])
#报错。属性href属于标签<a>,不属于标签<p>
# 引用requests库
import requests
# 引用BeautifulSoup库
from bs4 import BeautifulSoup

# 获取数据
res_foods = requests.get('http://www.xiachufang.com/explore/')
# 解析数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')
# 查找最小父级标签
list_foods = bs_foods.find_all('div',class_='info pure-u')

# 提取第0个父级标签中的<a>标签
tag_a = list_foods[0].find('a')
# 菜名,使用strip()函数去掉了多余的空格
name = tag_a.text.strip()
# 获取URL
URL = 'http://www.xiachufang.com'+tag_a['href']

# 提取第0个父级标签中的<p>标签
tag_p = list_foods[0].find('p',class_='ing ellipsis')
# 食材,使用strip()函数去掉了多余的空格
ingredients = tag_p.text.strip()
# 打印食材
print(ingredients)

写循环,存列表

# 引用requests库
import requests
# 引用BeautifulSoup库
from bs4 import BeautifulSoup

# 获取数据
res_foods = requests.get('http://www.xiachufang.com/explore/')
# 解析数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')
# 查找最小父级标签
list_foods = bs_foods.find_all('div',class_='info pure-u')

#大列表
aaa = []
for list_food in list_foods:
    # 提取父级标签中的<a>标签
    tag_a = list_food.find('a')
    # 菜名,使用strip()函数去掉多余的空格
    name = tag_a.text.strip()
    # 获取URL
    URL = 'http://www.xiachufang.com'+tag_a['href']
    # 提取父级标签中的<p>标签
    tag_p = list_food.find('p',class_='ing ellipsis')
    # 食材,使用strip去取多余的空格
    ingredients = tag_p.strip()
    # 创建小列表
    bbb = [name,URL,ingredients]
    # 添加到大列表中
    aaa.append(bbb)
# 打印
print(aaa)

第二种方法

# 引用requests库
import requests
# 引用BeautifulSoup库
from bs4 import BeautifulSoup

# 获取数据
res_foods = requests.get('http://www.xiachufang.com/explore/')
# 解析数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 查找包含菜名和URL的<p>标签
tag_name = bs_foods.find_all('p',class_='name')
# 查找包含食材的<p>标签
tag_ingredients = bs_foods.find_all('p',class_='ing ellipsis')
# 创建一个空列表,用于存储信息
list_all = []
# 启动一个循环,次数等于菜名的数量
for x in range(len(tag_name)):
    # 提取信息,封装为列表。注意此处使用的是<p>标签,而之前是<a>
    list_food = [tag_name[x].text.strip(),tag_name[x].find('a')['href'],tag_ingredients[x].text.strip()]
    # 将信息添加进list_all    
    list_all.append(list_food)
# 打印
print(list_all)

相关文章

网友评论

      本文标题:python爬虫3:beautifulsoupp实践

      本文链接:https://www.haomeiwen.com/subject/qzltghtx.html