- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试收集有关亚马逊上某些书籍的一些信息,但我遇到了一个我无法理解的奇怪故障错误。起初我以为是亚马逊阻止了我的连接,但后来我注意到请求有一个“200 OK”并且它有相应页面的真实 HTML 内容。
让我们以这本书为例:https://www.amazon.co.uk/All-Rage-Cara-Hunter/dp/0241985110
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
url = 'https://www.amazon.co.uk/All-Rage-Cara-Hunter/dp/0241985110/ref=sr_1_1?crid=2PPCQEJD706VY&dchild=1&keywords=books+bestsellers+2020+paperback&qid=1598132071&sprefix=book%2Caps%2C234&sr=8-1'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, features="lxml")
price = {}
if soup.select("#buyBoxInner > ul > li > span > .a-text-strike") != []:
price["regular_price"] = float(
soup.select("#buyBoxInner > ul > li > span > .a-text-strike")[0].string[1:].replace(",", "."))
price["promo_price"] = float(soup.select(".offer-price")[0].string[1:].replace(",", "."))
else:
price["regular_price"] = float(soup.select(".offer-price")[0].string[1:].replace(",", "."))
price["currency"] = soup.select(".offer-price")[0].string[0]
这部分工作正常,我可以获得正常价格和促销价格(如果存在),甚至货币。但是当我这样做时:
isbn = soup.select("td.bucket > .content > ul > li")[4].contents[1].string.strip().replace("-", "")
我收到“IndexError:列表索引超出范围”。但是如果我调试代码,内容实际上就在那里!
这是 BeautifulSoup 的错误吗?请求响应是否太长?
最佳答案
亚马逊似乎返回了两个版本的页面。一个在哪里<td class="bucket">
还有一个有几个<span>
标签。此脚本尝试从它们中提取 ISBN:
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/58.0.3029.110 Safari/537.3'}
url = 'https://www.amazon.co.uk/All-Rage-Cara-Hunter/dp/0241985110'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, features="lxml")
isbn_10 = soup.select_one('span.a-text-bold:contains("ISBN-10"), b:contains("ISBN-10")').find_parent().text
isbn_13 = soup.select_one('span.a-text-bold:contains("ISBN-13"), b:contains("ISBN-13")').find_parent().text
print(isbn_10.split(':')[-1].strip())
print(isbn_13.split(':')[-1].strip())
打印:
0241985110
978-0241985113
关于python - 带有亚马逊图书 ISBN 的间歇性 BeautifulSoup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63541601/
前几天收到了由戴路遥编著的《互联网科普书籍-站长之家》,打开书一看把我惊呆了,大家可以先看一下图书封面和目录。 如图所示,如何用百度,如何用淘宝,如何注册域名、如何用网站空间,甚至是如何用QQ
我正在尝试使用 Google 图书 API,但对于任何请求,我都会收到 totalItems = 0。 我尝试在 Chrome 中发送请求,例如: https://www.googleapis.com
我正在通过检索 JSON 数据将一些 Google 图书信息发送到我的数据库。我的代码如下 $.ajax({ type: 'POST', url: 'addIsbnScript.p
有没有办法以编程方式检索用户已购买的 Kindle 电子书列表? 我已经在 SO 上广泛搜索了答案,但是我能找到的几个相关问题都是古老的。亚马逊文档也不是很有帮助,因为据我所知,亚马逊联盟计划 API
我无法在此 Json 响应中提取书籍缩略图的 URL: https://www.googleapis.com/books/v1/volumes?q=java&maxResults=10 当我将链接硬编
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭12 年前。 Improve th
这是我的点击信息: Button searchButton = (Button) findViewById(R.id.search_button); searchButton.
如何在 Swift 中使用 JSON 从谷歌的书中获取作者?此代码有效,但我对作者有疑问。 这是一个 JSON 的例子: { "kind": "books#volume", "id": "17B
本文节选自清华大学出版社出版的图书《数据资产管理核心技术与应用》,作者为张永清等著。 从Spark 执行计划中获取数据血缘 因为数据处理任务会涉及到数据的转换和处理,所以从数据任务中解析血缘也是获
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
借助 Google Book Search API V1,我可以搜索图书。 现在,每当用户尝试使用不同的关键字进行搜索时,我只想搜索特定类别的书籍。 我无法在 Book API V1 中设置类别 ht
我想弄清楚如何使用 Google Books API 按 ISBN 搜索图书。我需要编写一个程序来搜索 ISBN,然后打印出标题、作者和版本。我尝试使用 List volumesList = book
我是一名优秀的程序员,十分优秀!