【发布时间】:2020-08-05 10:47:55
【问题描述】:
我正在尝试使用 Python 和 BeautifulSoup 抓取 product page 的 Aliexpress 产品数据。
我使用使用 SelectorLib 创建的 Aliexpress CSS 选择器运行引用 YML 文件 (aliexpress.yml) 的下一个代码:
from selectorlib import Extractor
import requests
import json
import argparse
argparser = argparse.ArgumentParser()
argparser.add_argument('url', help='Amazon Product Details URL')
# Create an Extractor by reading from the YAML file
e = Extractor.from_yaml_file('./aliexpress.yml')
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246'
headers = {'User-Agent': user_agent}
# Download the page using requests
args = argparser.parse_args()
r = requests.get(args.url, headers=headers)
# Pass the HTML of the page and create
data = e.extract(r.text)
# Print the data
print(json.dumps(data, indent=True))
我收到下一个回复:
{
"name": null,
"price": null,
"image": null
}
我还有其他用于亚马逊和其他电子商务的 YML 文件并且可以正常工作,但使用 Aliexpress 它返回 null。很奇怪,因为在SelectorLib中我可以正确查看预览数据,所以YML文件是正确的。
可能是 Aliexpress 阻止了我的抓取?如何在没有空响应的情况下抓取 Aliexpress 数据?
【问题讨论】:
-
你查看
r.text的内容了吗? -
Extractor如何解析数据? -
当他们publish an API 时为什么要抓取他们的 HTML?
-
@HristoIliev 我检查了 r.text 似乎我正在寻找的 css 选择器没有出现在那里。为什么不出现?,当我检查 aliexpress 链接时,可以识别 css 选择器。
-
也许网页是使用 JavaScript 动态创建的。你看过页面源吗?有一大块 JavaScript 包含大量数据,可能还有您需要从页面中抓取的所有内容。另外,使用他们的 API。
标签: python beautifulsoup