Я пытаюсь собрать данные о продуктах с различных веб-сайтов электронной коммерции, таких как Amazon, Ebay и другие. Все они имеют похожий шаблон, большое изображение, показывающее продукт, название продукта, цену ...
На самом деле я использую следующий код с Python, библиотекой BeatifulSoup и файлом YML для каждого электронная торговля (YML для Amazon, YML для ebay ...):
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))
Это нормально для первого шага очистки, но что произойдет, если я не знаю URL электронной коммерции, который будет передан и у меня нет файла YML, предварительно настроенного для этого. Скребок вернет ноль, потому что невозможно найти css селекторы.
{
"name": null,
"price": null,
"image": null
}
Как создать скребок, способный найти данные разумным способом, найдя сам по себе правильные селекторы для извлечения?