python - 如何将 find_all 2 次应用于解析
问题描述
我正在尝试制作一个可以抓取网站的网络刮刀
from bs4 import BeautifulSoup
import requests
url = 'https://eshop.ciernediery.sk/'
req = requests.get(url, timeout=5)
soup = BeautifulSoup(req.content, 'html.parser')
lst = soup.find_all('li', class_='product_cat-riso')
def fltr(item):
if 'instock' in item:
return True
else:
return False
in_stock = filter(fltr, lst)
for item in in_stock:
print(item)
解决方案
我将假设您只列出了其中一个类名的一部分,并且完整的类名是product_cat-risografiky
(来自多值类的单个)。我很想缩写 of 的逻辑,fltr()
然后确保成员资格测试在标签的类值列表中,而不是在标签对象中。
from bs4 import BeautifulSoup
import requests
def fltr(item):
return 'instock' in item['class']
url = 'https://eshop.ciernediery.sk/'
req = requests.get(url, timeout=5)
soup = BeautifulSoup(req.content, 'html.parser')
lst = soup.find_all('li', class_='product_cat-risografiky')
# lst = soup.select('li.product_cat-risografiky')
in_stock = filter(fltr, lst)
for item in in_stock:
print(item)
推荐阅读
- excel - 尝试使用 VBA 索引匹配匹配并失败
- flutter - 如何使用 SingleChildScrollView 避免溢出
- linux - 如何在 linux 中使用 xmlstarlet 从 xml 中获取值
- java - 如何从两个表中检索数据
- java - 带有 JSON 的 Kafka 消费者?
- c++ - Why can't I access the object I created on the heap?
- android - Android UberEats like 搜索功能 UI
- r - R将当前行条目与下一行条目(在同一列上)进行比较
- functional-programming - 如何用任意类型的备忘录编写reduce函数
- javascript - 为什么 try/catch 块中的已定义变量在同一函数范围内显示未定义?