我想创建一个程序,在一个亚马逊搜索结果页中的所有“畅销书”,并打开一个新的标签每一个。你知道吗
这是目前的代码:
import webbrowser, sys, requests
from bs4 import BeautifulSoup
amazonSearch = "".join(sys.argv[1:])
amazonResults = "https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-
alias%3Daps&field-keywords=" + amazonSearch
#getting search links
page = requests.get(amazonResults)
soup = BeautifulSoup(page.text, "html.parser")
searchLinks = soup.find_all("a", {"class": "a-link-normal s-access-detail-
page s-color-twister-title-link a-text-normal"})
if len(sys.argv) > 1:
webbrowser.open_new_tab(amazonResults)
print(page.status_code)
print(searchLinks)
else:
webbrowser.open_new_tab("https://www.amazon.com/")
现在,我无法获得所有带有class=a-link-normal s-access-detail-page s-color-twister-title-link a-text-normal
的锚定标记的列表。打印列表时,结果是空白的。我还检查了http状态码,看看URL是否有问题,但一切似乎都很好。你知道吗
我现在也尝试过同样的方法,但我找到的唯一一个在标记中以同样的方式开始的类是:
再次检查结果页。你知道吗
在所选类中可能没有任何内容。你知道吗
实际上,错误是类atribute中有一个额外的空间在
page s-color
之间使用以下语法获取这些超链接应该没有问题:
编辑:
您还必须更改请求标题,否则页面将不会加载内容:
a-link-normal s-access-detail-page s-color-twister-title-link a-text-normal
类用于指示赞助项目。请注意,即使在站点的源代码中,类名之间有一个双空格,BeautifulSoup也会在某个地方删除它,您需要删除它才能将元素作为目标。你知道吗使用下面的代码以赞助项目和普通项目为目标:
或者
如果你喜欢CSS Selectors。我认为后者更具可读性。你知道吗
代码中有一个bug,您可以修复:
amazonSearch = "".join(sys.argv[1:])
。您需要使用+
分隔符来分隔搜索关键字。改用"+".join(sys.argv[1:])
。你知道吗相关问题 更多 >
编程相关推荐