Задать вопрос

Как спарсить страницы сайта?

Нужно спарсить значения с кучи страниц сайта и записать их в MySQL. Дивы, где стоят значения - заранее известны и ид/класс их не меняется (страницы статические, просто информация везде разная). Подскажите пожалуйста наиболее простой способ в нынешнее время это сделать (может какие-то инструменты есть, упрощающие это).

С PHP знаком поверхностно, поэтому ссылки на материалы по разбору запросов/ответов и тд. очень приветствуются.

Спасибо.
  • Вопрос задан
  • 1716 просмотров
Подписаться 7 Оценить 8 комментариев
Пригласить эксперта
Ответы на вопрос 4
@bnytiki
Вы за эту неделю уже 4-й такой.
Но раз вы не умеете пользоваться поиском, то...

scrapy, например, для этого предназначен (чтобы получить информацию с сайтов, но записать в MySQL - это отдельная задача, которую не scrapy решает).
https://scrapy.org/
Но это для Python.

Есть для Go
https://github.com/PuerkitoBio/gocrawl
https://github.com/PuerkitoBio/goquery

Наверняка есть и для PHP нечто подобное.

А еще можно воспользоваться готовыми сервисами:
80legs, Mozenda.
Они по вашему заказу все сграбят, выдадут вам в удобной форме - вы потом запишете из этой формы куда вам надо.
У них есть бесплатные пробные тарифы.
Ответ написан
Комментировать
Insolita
@Insolita
Отчаянная домохозяйка
guzzle + phpQuery/nokogiri
Ответ написан
Комментировать
Llaminator
@Llaminator
Прогаю на Dlang
Берёшь python, берёшь xml, смотришь туториалы, готово
Ответ написан
Комментировать
@APaMazur
Я бы сказал, что PHP - не лучшее решение для поставленной задачи

Для начала, нужно посмотреть нет ли у ресурса нормального AJAX-интерфейса, это видно в консоли

Если нет и нужно парсить, то правильный подход, вероятно, на сегодня - это Python + requests + BeautifulSoup (есть альтернативы, но этот точно работает и работает хорошо)

Ставим Python (я предпочитаю 2.7, но это непринципиально)
Ставим requests и BeautifulSoup
Ставим lxml

Далее пишем что-то примерно такое
import requests
from bs4 import BeautifulSoup

page = requests.get('http://www.mysite.com/1').content    # Получаем данные
page = BeautifulSoup(page, 'lxml')    # Приводим данные к красивому виду
parsedData = page.findAll('div', {'class': 'my-data-class'})    # Выбираем теги по атрибутам (для примера взят класс)


Выгрузить данные, если их не очень много, можно, например, в csv
csvfile = open('myfile.csv', 'wb')
writer = csv.writer(csvfile, delimiter=';', quotechar=';', quoting=csv.QUOTE_MINIMAL)
for row in parsedData:
    writer.writerow(row)
csvfile.close()


Еще могут понадобиться RegExp и строковые операции, но это тоже несложно и легко гуглится
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 дек. 2024, в 06:04
15000 руб./за проект
21 дек. 2024, в 01:12
1000 руб./за проект
20 дек. 2024, в 22:55
1500 руб./за проект