【发布时间】:2019-09-17 13:18:12
【问题描述】:
问题:“linkElems”列表似乎是空的
怀疑是什么导致了问题:我认为我告诉它抓取的标签是错误的
程序功能:
- 在 Amazon.com 中搜索命令行中的参数并下载 网站进入变量“res”
- 选择链接的 URL 搜索结果并将它们存储到名为“linkElems”的列表中
- 为前 5 个结果打开新的浏览器标签
上下文:我已经完成了 Automate the Boring stuff 的第 11 章,并使用了第一个项目中的相同代码,只是我稍微调整了一下以搜索 Amazon 搜索结果而不是 google .
我尝试过哪些标签:
- 'a'
- 'h2.一个'
- 'a.a-link-normal a-text-normal'
- '.h2 a'
#! python3
#Shop on Amazon - searchs amazon and opens the first 5 top results
import sys,requests,bs4,webbrowser,logging
print ('Searching')
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'
}
res = requests.get('https://www.amazon.com/s?k=' + ''.join(sys.argv[1:]))
res.raise_for_status
soup = bs4.BeautifulSoup(res.text,features = 'html.parser')
linkElems = soup.select('a.a-link-normal a-text-normal')
numOpen = min(5, len(linkElems))
for i in range(numOpen):
webbrowser.open('https://amazon.com' + linkElems[i].get('href'))
H我尝试使用标签抓取的链接的 TML 示例:
【问题讨论】:
-
查看这篇文章的答案!它可能会有所帮助。问题是类似的。 stackoverflow.com/questions/11465555/…
-
@francovici 谢谢。我检查了那个链接,但它并没有完全解决我的问题。在本书的前一个项目中,它显示了来自谷歌搜索的链接如何是“div r”类的兄弟,所以我尝试对亚马逊做类似的事情搜索,但它似乎没有抓住它们,所以我想我不明白如何判断要使用哪个标签。
标签: python css web-scraping