首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何刮取Aliexpress产品数据?

如何刮取Aliexpress产品数据?
EN

Stack Overflow用户
提问于 2020-04-22 12:05:29
回答 1查看 3.2K关注 0票数 0

我正试图用Python和BeautifulSoup来抓取产品页的Aliexpress产品数据。

我运行下一段代码,引用一个YML文件(aliexpress.yml),其中包含用SelectorLib创建的Aliexpress CSS选择器:

代码语言:javascript
运行
复制
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))

我收到下一个答复:

代码语言:javascript
运行
复制
{
 "name": null,
 "price": null,
 "image": null
}

我有其他用于Amazon和其他电子商务的YML文件,并且工作正常,但是使用Aliexpress,它返回null。这很奇怪,因为在SelectorLib中,我可以正确地查看预览数据,所以YML文件是正确的。

会不会是支付宝阻塞了我的擦伤?如何在没有空响应的情况下刮取Aliexpress数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-22 15:14:55

  1. 页面是通过JavaScript加载的,因此requests不会帮助您呈现JS。您可以使用selenium或任何呈现JS的模块。
  2. 我注意到您想要的数据位于script标记中,您实际上可以在JSON中对其进行loads,然后将其放在parse中。
  3. 之所以能够在驱动程序的elements中看到inspect element,是因为浏览器实际上是为您可视化的,但是如果您检查了page source,如果禁用了JS,您会注意到它不在其中。

在这里,我已经将script加载到JSON中,您可以以JSON dict的形式访问它

代码语言:javascript
运行
复制
import requests
import json
import re

target = ["title", "itemDetailUrl", "imagePath"]


def main(url):
    r = requests.get(url)
    match = re.search(r'data: ({.+})', r.text).group(1)
    data = json.loads(match)
    goal = [data['pageModule'][x] for x in target] + \
        [data['priceModule']['formatedActivityPrice']]
    print(goal)


main("https://es.aliexpress.com/item/32601027783.html")

输出:

代码语言:javascript
运行
复制
['Nueva versión Xiaomi Mi cargador de coche Dual USB versión de carga rápida 37W Max con puntas de luz LED para iPhone Huawei Xiaomi para Samsung|charger dual|dual usb|mi car - AliExpress', 
'https://es.aliexpress.com/item/32601027783.html', 
'https://ae01.alicdn.com/kf/H6f0b93e98bb646d5a1183161b65707e3P/Nueva-versi-n-Xiaomi-Mi-cargador-de-coche-Dual-USB-versi-n-de-carga-r-pida.jpg', 
'€ 9,31 - 10,86']
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61364719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档