2013-02-14 60 views
0

我使用BeautifulSoup(BS4)構建刮刀工具,該工具允許我從位於'h1'標籤之間的任何TopShop.com產品頁面抽取產品名稱。無法弄清楚爲什麼我寫的代碼不工作!使用BeautifulSoup刮擦產品名稱

from urllib2 import urlopen 
from bs4 import BeautifulSoup 
import re 

TopShop_URL = raw_input("Enter a TopShop Product URL") 
ProductPage = urlopen(TopShop_URL).read() 

soup = BeautifulSoup(ProductPage) 

ProductNames = soup.find_all('h1') 

print ProductNames 
+0

一個問題是您的代碼在最後一行生成SyntaxError:http://ideone.com/ByfJ7K – bernie 2013-02-14 23:35:21

+1

「它不工作」?你看到的結果與你期望的結果有什麼不同? – bernie 2013-02-14 23:37:09

+0

@bernie在我的結尾沒有看到語法錯誤。期望在H1標籤之間刮取數據,但上述內容似乎沒有任何回報。我對Python很陌生,找到自己的腳。 – 2013-02-14 23:46:59

回答

2

我得到這個使用要求()工作

from bs4 import BeautifulSoup 
import requests 

content = requests.get("TOPShop_URL").content 
soup = BeautifulSoup(content) 
product_names = soup.findAll("h1") 
print product_names 
+2

這是假設只有一個h1標籤 – Greg 2013-02-14 23:49:19

+0

我已更改我的代碼以允許多個h1 – boblefrag 2013-02-15 09:35:16

+0

thx尋求幫助。我試過了,但被告知我需要一個外部解析器(lxml或html5lib)。我會給你一個機會,看看它是如何發展的。非常感謝您的幫助! – 2013-02-15 12:22:47

0

你的代碼是正確的,但問題是通過JavaScript動態生成包括產品名稱股利。 爲了能夠成功地解析這個元素,您應該介意使用Selenium或類似的工具,這將允許您在所有dom完全加載後解析網頁。