2014-06-27 50 views
-1

我想从这两个网站刮取定价信息:site1site2 我正在使用Python和包装BeautifulSoup和请求。蟒蛇网站抓取与丢失的源代码

我意识到价格部分在两个站点的源代码中都不可用。所以我想知道如何才能抓取数据。

任何意见,将不胜感激。谢谢

+0

如果您突出显示部分和视图元素,您将看到信息。但是,如果您只是查看源代码,那么您看不到定价部分 – user3670589

+0

为什么该帖子标有这样一个奇怪的“太宽”的标志?这个问题对于特定网站上的特定问题非常具体。 – alecxe

+0

你能评论第二个链接吗?我可以用类似的方式来处理它吗? – user3670589

回答

1

问题是,首先你需要选择一个国家来查看价格。

在技术意义上说,你需要做一个POST请求http://www.strem.com/catalog/index.php选择一个国家,那么你就可以得到价格:

from bs4 import BeautifulSoup 
import requests 

URL = "http://www.strem.com/catalog/v/29-6720/17/copper_1300746-79-5" 
session = requests.session() 
p = session.post("http://www.strem.com/catalog/index.php", {'country': 'USA', 
                  'page_function': 'select_country', 
                  'item_id': '7211', 
                  'group_id': '17'}) 

response = session.get(URL) 
soup = BeautifulSoup(response.content) 
print [td.text.strip() for td in soup.find_all('td', class_='price')] 

此打印:

[u'US$85.00', u'US$285.00', u'US$1,282.00', u'US$3,333.00'] 

一个更优雅的解决方案将使用mechanize包裹提交表格:

import cookielib 
from bs4 import BeautifulSoup 
import mechanize 

URL = "http://www.strem.com/catalog/v/29-6720/17/copper_1300746-79-5" 
browser = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
browser.set_cookiejar(cj) 
browser.open(URL) 
browser.select_form(nr=1) 
browser.form['country'] = ['USA'] 
browser.submit() 

data = browser.response().read() 
soup = BeautifulSoup(data) 
print [td.text.strip() for td in soup.find_all('td', class_='price')] 

打印:

[u'US$85.00', u'US$285.00', u'US$1,282.00', u'US$3,333.00']