如何使用BeautifulSoup4打开亚马逊的链接?

2024-04-25 04:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:链接列表显示为空

怀疑是什么导致了问题:我认为我告诉它抓取的标签是错误的

程序功能:

  • 搜索亚马逊网站命令行中的参数,并下载 网站进入变量“res”
  • 选择链接的URL 搜索结果并将其存储到名为“linkElems”的列表中
  • 为前5个结果打开新的浏览器选项卡

上下文:我已经完成了《自动化无聊的东西》的第11章,并且使用了与第一个项目相同的代码,只是我对它做了一些调整,以搜索亚马逊搜索结果,而不是谷歌。你知道吗

我尝试了哪些标签:

  • “a”
  • “h2。a'
  • 'a.a-链接-正常a-文本-正常'
  • '.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'))

HTML我试图使用标签获取的链接示例:

Sample HTML That I'm searching

Example of me running the program and its output


Tags: andtheamazon列表get网站链接sys
1条回答
网友
1楼 · 发布于 2024-04-25 04:17:02

你的问题是你的css选择器'a.a-link-normal a-text-normal'。这将在类为a-link-normala标记中查找a-text-normal标记。你知道吗

a-link-normala-text-normal都是相关a标记的类。您可以在css选择器中通过如下链接来表示:'a.a-link-normal.a-text-normal'。这表示您正在寻找同时具有类a-link-normala-text-normala标记。你知道吗

例如,这个脚本将在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'])

相关问题 更多 >