2016-12-26 86 views
0

以下是我的代碼,從url獲得產品名稱「RENU FRESH LENS SOLUTION 120 ML」..這就是p標籤..我只需要這個名稱。使用Scraping獲取產品名稱

import requests 
import lxml 
from bs4 import BeautifulSoup 

url = "http://www.lenskart.com/renu-fresh-lens-solution-100-ml.html" 

source = requests.get(url) 
data = source.content 
soup = BeautifulSoup(data, "lxml") 

pn = soup.find_all("div", {"class":"prcdt-overview"})[0].text 
print pn 
+2

好。你也有問題嗎? – DeepSpace

+0

你面臨的問題是什麼? – saeleko

+0

只能得到產品名稱「RENU FRESH LENS SOLUTION 120 ML」而不是全部內容 – Nitin

回答

2
import requests 
from bs4 import BeautifulSoup 

url = "http://www.lenskart.com/renu-fresh-lens-solution-100-ml.html" 

source = requests.get(url) 
# data = source.content pass the variable in the BeautifulSoup() 
soup = BeautifulSoup(source.content, "lxml") 

查找()版本:

pn = soup.find('div', class_="prcdt-overview").p.text 
  1. 你並不需要導入'lxml',BeautifulSoup會爲你做它
  2. 如果你只需要第一個標籤的find_all(),則應該嘗試find(),它會返回find_all()中的第一個標記
  3. 您可以使用tag.tag.find()/find_all()逐步獲取標籤。
  4. tag.tag_nametag.find('tag_name')

CSS選擇器版本的短名稱:

soup.select_one(".prcdt-overview p").text 
  1. select_one()將返回select()的第一個標籤,就像find()find_all()
1

試試這個

pn = soup.select(".prcdt-overview h1[itemprop=name] p")[0].text 

pn =soup.select(".prcdt-overview")[0].select("h1[itemprop=name]>p")[0].text 

還有其他的方式爲好,試試這些

希望這有助於

+0

請仔細閱讀本文檔,它非常簡單https://www.crummy.com/software/BeautifulSoup/bs4/doc/ – SarathSprakash

1

更詳細的方式:

pn = soup.find_all("div", {"title":"prcdt-overview"})[0] 
divTitle = pn.find("div",{"class":"title"}) 
pText = divTitle.find("p").text 
print pText