使用请求和美丽的汤刮表内容

时间:2015-02-06 19:55:49

标签: python web-scraping beautifulsoup screen-scraping python-requests

Python / Webscraping初学者请耐心等待。我正试图从this 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肯定会阻止我拉什么吗?

1 个答案:

答案 0 :(得分: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内容,您将无法检索所需的信息。