0

Python/WebScraping初学者,所以请忍受我。我试图从this URL获取所有产品名称使用请求和美丽的汤刮桌子内容

不幸的是,当我运行我的代码时没有任何东西会返回。相同的代码适用于大多数其他网站,但我已经尝试了数十种变体,并且无法使其适用于此网站。

这个URL甚至可以使用Bsoup来刮擦吗?任何反馈意见。

import bs4 
import requests 

url = 'http://www.rakuten.com/sr/searchresults.aspx?qu' 
payload = {'q': 'Python',} 

r = requests.get(url % payload) 

soup = bs4.BeautifulSoup(r.text) 
titles = [a.attrs.get('href') for a in soup.findAll('div.productscontainer a[href^=/prod]')] 

for t in titles: 
    print(t) 





import bs4 
import requests 

url = 'http://www.rakuten.com/sr/searchresults.aspx?qu' 

r = requests.get(url) 

soup = bs4.BeautifulSoup(r.text) 
titles = [td.text for td in soup.findAll('td', attrs={'class': 'searchlist'})] 

for t in titles: 
    print(t) 

如果这种格式是正确的,那么JS肯定会阻止我拉什么东西?

+0

您可以在您的问题中编辑代码,无需将其添加到评论中。 – 2015-02-06 20:44:41

回答

0

首先,你的字符串格式可能是错误的。看看这个:

>>> url = 'http://www.rakuten.com/sr/searchresults.aspx?qu' 
>>> payload = {'q': 'Python',} 
>>> url % payload 
'http://www.rakuten.com/sr/searchresults.aspx?qu' 

我想这不是你想要的。您应该查看Python中字符串格式的工作原理,然后提出构建URL的正确方法。其次,“搜索引擎”大量使用JavaScript。通过查看最初检索的HTML内容,您可能无法检索到您想要的信息。