【问题标题】:Scraping Amazon products names抓取亚马逊产品名称
【发布时间】:2019-08-11 14:50:48
【问题描述】:

我正在尝试根据卖家名称在亚马逊上收集前两页产品名称。当我请求页面时,它包含我需要的所有元素,但是,当我使用 BeautifulSoup 时 - 它们没有被列出。这是我的代码:

import requests
from bs4 import BeautifulSoup
headers = {'User-Agent':'Mozilla/5.0'}
res = requests.get("https://www.amazon.com/s?me=A3WE363L17WQR&marketplaceID=ATVPDKIKX0DER", headers=headers)
#print(res.text)
soup = BeautifulSoup(res.text, "html.parser")
soup.find_all("a",href=True)

产品链接未列出。如果 Amazon API 提供了这些信息,我愿意使用它(请提供一些使用示例)。提前非常感谢。

【问题讨论】:

  • 你能提供一些关于你所看到的和你期望看到的细节吗?
  • 它们可能是动态加载的,需要像 selenium 这样的方法
  • @QHarr 这就是我一开始的想法,但它们出现在res.text 中,这很奇怪!但不存在于汤中
  • @EliotK 我想要的是获得res.text 中存在的产品标题(名称),如问题所述,但不在汤中
  • 例如将是 Elsey 博士的 Cat Ultra Premium 结块猫砂(包装可能不同)?

标签: python web-scraping beautifulsoup


【解决方案1】:

我已经从 alt 属性中提取了产品名称。这符合预期吗?

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.amazon.com/s?me=A3WE363L17WQR&marketplaceID=ATVPDKIKX0DER')
soup = bs(r.content, 'lxml')
items = [item['alt'] for item in soup.select('.a-link-normal [alt]')]
print(items)

两页以上:

import requests
from bs4 import BeautifulSoup as bs
url = 'https://www.amazon.com/s?i=merchant-items&me=A3WE363L17WQR&page={}&marketplaceID=ATVPDKIKX0DER&qid=1553116056&ref=sr_pg_{}'
for page in range(1,3):
    r = requests.get(url.format(page,page))
    soup = bs(r.content, 'lxml')
    items = [item['alt'] for item in soup.select('.a-link-normal [alt]')]
    print(items)

【讨论】:

  • 我已经使用 `lxml.html' 模块解决了这个问题,但我想知道为什么 soup(html) 无法读取它
  • 所以上述工作如预期? stackoverflow.com/questions/25714417/… lxml 我认为 html 格式不好可能会更好。
猜你喜欢
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 2022-11-03
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
相关资源
最近更新 更多