需要一些帮助。我有一个函数,我在我的bs对象上使用find_all函数来打印一些特定的html。我的目标是最终将productName和颜色匹配在一起,这样我就可以找到正确的链接但是我在挑选正确的单词时遇到了一些麻烦。这是我的代码,运行时我没有输出。
timeline
任何人都有任何想法为什么我的if语句不会打印出包含“Checker”的结果?感谢
答案 0 :(得分:1)
您的代码存在一些问题:
def
下的代码应缩进wrt。 def
关键字。input
,为什么要使用它?函数名称应为小写,单词分隔 必要时强调提高可读性。
变量名称遵循与函数名称相同的约定。
回到你的问题,做你想做的最直接的方式是:
import requests
from bs4 import BeautifulSoup
import re
def get_product():
session = requests.Session()
r = session.get('http://www.supremenewyork.com/shop/all/accessories')
soup = BeautifulSoup(r.content, 'lxml')
product_names = soup.findAll('a', text=re.compile(r'\bTees\b'))
product_names = [link.get_text() for link in product_names]
return product_names
products = get_product()
for item in products:
if 'Checker' in item:
print('yas gurl!')
答案 1 :(得分:0)
soup.findAll找到多个元素。因此,您需要迭代它们:
import requests
from bs4 import BeautifulSoup
def getPremeProduct() -> str:
session = requests.Session()
base = "http://www.supremenewyork.com"
r = session.get('http://www.supremenewyork.com/shop/all/accessories')
soup = BeautifulSoup(r.content, 'lxml')
keyword = input('Input your keyword: ')
color = str(input('input your color: '))
productColor = soup.findAll('p', text=re.compile(r'\bChecker\b'))
productNames = soup.findAll('a', text=re.compile(r'\bTees\b'))
for product_name in ProductNames:
product_name = str(product_name)
if "Checker" in product_name:
print(product_name)