问题:“linkElems”列表显示为空
怀疑是什么导致了这个问题:我认为我告诉它的标签是错误的
程序功能:
上下文:我已经完成了第11章自动化无聊的东西,并使用了第一个项目中的相同代码,除了我已经调整了一点点来搜索亚马逊搜索结果而不是谷歌。
我尝试过哪些标签:
#! 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'))
链接的HTML示例我试图使用标记抓取:
你的问题是你的css选择器'a.a-link-normal a-text-normal'
。这将在a-text-normal
标签中查找带有a
类的a-link-normal
标签。
a-link-normal
和a-text-normal
都是相关的a
标签。您可以通过链接它们来在css选择器中表达这个:'a.a-link-normal.a-text-normal'
。这表示您正在寻找具有a
和a-link-normal
类的a-text-normal
标签。
例如,此脚本将搜索amazon以获取命令行输入,收集所有链接(links = soup.select('a.a-link-normal.a-text-normal')
),然后为找到的每个链接打印出href
属性。在这一点上,我只能说,它适用于我的机器。
from bs4 import BeautifulSoup
import requests
from sys import argv
r = requests.get("https://www.amazon.com/s?k=" + '+'.join(argv[1:]))
r.raise_for_status()
soup = BeautifulSoup(r.content, 'html.parser')
links = soup.select('a.a-link-normal.a-text-normal')
for tag in links:
print(tag.attrs['href'])