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肯定会阻止我拉什么吗?
答案 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内容,您将无法检索所需的信息。