使用BeautifulSoup刮擦产品名称

问题描述:

我使用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

我得到这个使用要求()工作

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

你的代码是正确的,但问题是通过JavaScript动态生成包括产品名称股利。 为了能够成功地解析这个元素,您应该介意使用Selenium或类似的工具,这将允许您在所有dom完全加载后解析网页。