Как собрать данные с разных сайтов? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь собрать данные о продуктах с различных веб-сайтов электронной коммерции, таких как 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
}

Как создать скребок, способный найти данные разумным способом, найдя сам по себе правильные селекторы для извлечения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...