如何使用html“查找属性”;“隐藏的”;使用beautifulsoup python进行输入

如何使用html“查找属性”;“隐藏的”;使用beautifulsoup python进行输入,python,beautifulsoup,Python,Beautifulsoup,我能够获得具有典型数据的元素: <input id="mbb-offeringID-1" type="checkbox" name="offeringID.1" value="cLtX5MPovjIvCLvcPPMSjATUpzLHNW%2Bk9pGa3%2BTkldS92roGTDDM%2B8BvfXGJP5GWE3DNQLNkJUny6cgknOlP%2F3xEODHJiPzzb3Io7oXbgDNP9cSrVkoa

我能够获得具有典型数据的元素:

<input id="mbb-offeringID-1" type="checkbox" name="offeringID.1" value="cLtX5MPovjIvCLvcPPMSjATUpzLHNW%2Bk9pGa3%2BTkldS92roGTDDM%2B8BvfXGJP5GWE3DNQLNkJUny6cgknOlP%2F3xEODHJiPzzb3Io7oXbgDNP9cSrVkoaA5JVvTc1IPb%2BEcbB%2BeqhE7BAczO81wFLlD3SbtD55y7hOIa5DYQLzkaI9FHJTuyAphRUriSbCRuS">
如何使用隐藏输入检索值,例如:

 <input type="hidden" name="offeringID.1" value="9Lt1oDtQ%2BIAdndBuUQBzl%2FXSUE8quGoqB41HEfz9IncLO4u3HybZ3EWtylW8vTJ1v3KZOS%2FPQRFGN6L0a0pjYFd8KcQ%2Bok3AsTNXxrQUaar1gXa7EHhACX2c%2Bh72E3izLUOwM4q6Wxw%3D">

这是完整的html

<div class="a-fixed-right-grid-col aod-atc-column a-col-right" style="width:150px;margin-right:-150px;float:left;">

   <form method="post" action="/gp/add-to-cart/html/ref=aod_dpdsk_new_0" class="aod-atc-form-header-desktop a-spacing-none">

        <input type="hidden" name="session-id" value="146-6039598-0678601">
          
        <input type="hidden" name="offeringID.1" value="9Lt1oDtQ%2BIAdndBuUQBzl%2FXSUE8quGoqB41HEfz9IncLO4u3HybZ3EWtylW8vTJ1v3KZOS%2FPQRFGN6L0a0pjYFd8KcQ%2Bok3AsTNXxrQUaar1gXa7EHhACX2c%2Bh72E3izLUOwM4q6Wxw%3D">

你可以这样做

from bs4 import BeautifulSoup
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, "lxml")
hidden_tags = soup.find_all("input", type="hidden")
for tag in hidden_tags:
      print(tag )
你能做到的

from bs4 import BeautifulSoup
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, "lxml")
hidden_tags = soup.find_all("input", type="hidden")
for tag in hidden_tags:
      print(tag )

由于您还希望将
“name=offeringID.1”
作为关键字参数传递给
find_all()
,而我在回答中没有提到它,因此我标记为重复。我会在这里发布一个解决方案。您可以添加
attrs=
参数:

for tag in soup.find_all("input", type="hidden", attrs={"name": "offeringID.1"}):
    print(tag["value"])

编辑:数据通过Ajax从外部加载,您得到的“值”如下:

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
    "referer": "https://www.amazon.ca/gp/aod/ajax/ref=auto_load_aod?asin=B07RF237B1&pc=dp",
}

params = (
    ("asin", "B07RF237B1"),
    ("pc", "dp"),
)

response = requests.get(
    "https://www.amazon.ca/gp/aod/ajax/ref=auto_load_aod",
    headers=headers,
    params=params,
)

soup = BeautifulSoup(response.content, "html.parser")

print(soup.find("input", type="hidden", attrs={"name": "offeringID.1"})["value"])

由于您还希望将
“name=offeringID.1”
作为关键字参数传递给
find_all()
,而我在回答中没有提到它,因此我标记为重复。我会在这里发布一个解决方案。您可以添加
attrs=
参数:

for tag in soup.find_all("input", type="hidden", attrs={"name": "offeringID.1"}):
    print(tag["value"])

编辑:数据通过Ajax从外部加载,您得到的“值”如下:

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
    "referer": "https://www.amazon.ca/gp/aod/ajax/ref=auto_load_aod?asin=B07RF237B1&pc=dp",
}

params = (
    ("asin", "B07RF237B1"),
    ("pc", "dp"),
)

response = requests.get(
    "https://www.amazon.ca/gp/aod/ajax/ref=auto_load_aod",
    headers=headers,
    params=params,
)

soup = BeautifulSoup(response.content, "html.parser")

print(soup.find("input", type="hidden", attrs={"name": "offeringID.1"})["value"])

这回答了你的问题吗?谢谢,我如何将“name=offeringID,1”传递给它并检索值。它打印的不是我反关联的内容。我在这里发布了一个答案,只是稍微修改了标记的答案,因为你想添加另一个关键字。这个答案回答了你的问题吗?谢谢,我如何将“name=offeringID,1”传递给它并检索值。它打印的不是我反关联的内容。我在这里发布了一个答案,但对标记的答案稍作修改,因为您想添加另一个关键字ArgumentThank,我如何向其中传递“name=offeringID,1”并检索值Thank,我如何传递“name=offeringID,1”我尝试了这个,它给了我和以前一样的输出。@ShiO你能分享URL和预期的输出吗,我正在尝试获得官方的amazon offerid输出,这应该是第一个输出,usually@ShiO我不确定预期的输出是什么。什么是“offerid”?谢谢,非常感谢。我会对ajax做更多的研究。我尝试了这个,它给了我和以前一样的输出。@ShiO你能分享URL和预期输出吗,我正在尝试获得官方的amazon offerid输出,这应该是第一个输出,usually@ShiO我不确定预期的输出是什么。什么是“offerid”?谢谢,非常感谢。我将对ajax做更多的研究。