Python Beautifulsoup奇怪的结果
我试图在亚马逊搜索中找到所有产品的标题。 它是有效的,但结果只是返回了亚马逊的页眉和页脚链接 如果我检查亚马逊源代码中的元素,它看起来像是用锚包裹的标签。但是,在尝试刮取数据时,情况似乎并非如此Python Beautifulsoup奇怪的结果,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我试图在亚马逊搜索中找到所有产品的标题。 它是有效的,但结果只是返回了亚马逊的页眉和页脚链接 如果我检查亚马逊源代码中的元素,它看起来像是用锚包裹的标签。但是,在尝试刮取数据时,情况似乎并非如此 import requests import re from bs4 import BeautifulSoup def adverts_trade(max_pages): page = 1 while page <= max_pages: url = 'https
import requests
import re
from bs4 import BeautifulSoup
def adverts_trade(max_pages):
page = 1
while page <= max_pages:
url = 'https://www.amazon.co.uk/s/ref=sr_pg_2?rh=n%3A560798%2Cn%3A560834%2Ck%3Acanon+lenses&page=' + str(page) + '&keywords=canon+lenses&ie=UTF8'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll('a'):
#href = link.find('h2').get_text()
print(link)
page += 1
adverts_trade(10)
亚马逊不喜欢你从他们那里抓取数据。如果将此行添加到代码中:
print(plain_text)
您将看到以下内容:
> <!--
> To discuss automated access to Amazon data please contact api-services-support@amazon.com.
> For information about migrating to our APIs refer to our Marketplace APIs at
> https://developer.amazonservices.co.uk/ref=rm_5_sv, or our Product
> Advertising API at
> https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html/ref=rm_5_ac
> for advertising use cases.
> -->
不要期望大多数站点能够简单地使用请求和bs4来刮取数据。要么使用他们的API,要么考虑硒或其他可以驱动实际浏览器的刮擦工具。 < P>你想从标签的标题属性中获取标题吗?或者您正在尝试从标记的H2子级获取标题
如果您选择第一种方式,请尝试打印链接['title'],而不是打印整个标签。在beautifulSoup中,您可以像普通字典一样访问被捕获的锚的属性。我很惊讶,没有比seleniumAmazon更简单的解决方法了。seleniumAmazon花费大量资金获取高质量的图像、产品属性,并实时动态调整价格。他们需要让竞争对手尽可能难以获取这些数据。几乎所有主要的电子商务网站都会尽其所能防止刮擦。