问题:“ linkElems”列表似乎为空
怀疑是引起问题的原因:我认为我要告诉它抓取的标签是错误的
程序功能:
上下文:我已经完成了《自动化无聊》的第11章,并使用了第一个项目中的相同代码,只是我做了一些调整以搜索Amazon搜索结果而不是google。
我尝试过的标签:
#! 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链接示例:
答案 0 :(得分:1)
您的问题是您的CSS选择器'a.a-link-normal a-text-normal'
。这将在a-text-normal
类的a
标记内寻找a-link-normal
标记。
a-link-normal
和a-text-normal
都是相关a
标签的两者类。您可以通过像这样'a.a-link-normal.a-text-normal'
进行链接来在CSS选择器中表达这一点。这表示您正在寻找同时具有类a
和 a-link-normal
的{{1}}标记。
例如,该脚本将在亚马逊搜索您的命令行输入,收集所有链接(a-text-normal
),然后为找到的每个链接打印links = soup.select('a.a-link-normal.a-text-normal')
属性。在这一点上,我只能说它在我的机器上工作。
href