这是我的代码。
import requests
from bs4 import BeautifulSoup
res = requests.get('http://www.snapdeal.com/products/computers-laptops?sort=plrty&')
soup = BeautifulSoup(res.text)
price = soup.find_all('div', class_="product-price").children
我想从这个网站上搜索数据,但是div没有上课,这就是为什么我不知道如何做到这一点然后我发现你可以找到div标签的孩子,但它也是不工作,我试图得到所有标签。
答案 0 :(得分:4)
有多种方法可以获得所需的价格值。
您可以使用CSS selector并获得div
级product-price
的每个for price in soup.select("div.product-price > div:nth-of-type(1)"):
print price.get_text(strip=True)
的第一个孩子:
Rs 33490Rs 42990(22%)
Rs 26799Rs 31500(15%)
...
Rs 41790Rs 44990(7%)
Rs 48000Rs 50000(4%)
这将打印:
div
nth-of-type
documentation reference
请注意,除了实际价格外,它还包含删除线字体上的先前价格。要摆脱它,请使用find()
text=True
和recursive=False
来获取for price in soup.select("div.product-price > div:nth-of-type(1)"):
print price.find(text=True, recursive=False).strip()
中的顶级文字:
Rs 33490
Rs 26799
...
Rs 41790
Rs 48000
打印:
Rs
您可以进一步省略开头的for div in soup.select("div.product-price > div:nth-of-type(1)"):
price = div.find(text=True, recursive=False).strip()
price = float(price.replace("Rs ", ""))
print price
并获取int(或float)价格值:
33490.0
26799.0
...
41790.0
48000.0
打印:
{{1}}
答案 1 :(得分:1)
试试这个:
import requests
from bs4 import BeautifulSoup
res = requests.get('http://www.snapdeal.com/products/computers-laptops?sort=plrty&')
soup = BeautifulSoup(res.text)
price_divs = soup.find_all('div', {'class': 'product-price'})
for price_div in price_divs:
child_div = price_div.find('div')
print child_div.text
答案 2 :(得分:1)
这个得到的div中的文字都是条纹干净的:
import requests
from bs4 import BeautifulSoup
res = requests.get('http://www.snapdeal.com/products/computers-laptops?sort=plrty&')
soup = BeautifulSoup(res.text)
price = soup.find_all('div', class_="product-price")
for p in price:
soupInner = BeautifulSoup(str(p))
print soupInner.find('div').find('div').get_text().strip()