Соскребать изображения с одного сайта на другой - PullRequest
1 голос
/ 02 апреля 2011

Я новичок здесь и совершенно новичок в веб-разработке в целом. Я занимаюсь 3D-моделированием и дизайном, но недавно я начал проект, который, я думаю, мог бы стать хорошим ресурсом для 3D-сообщества.

У меня есть страница, в основном разработанная и закодированная здесь: The Top Row , но я почти закончила свои знания. Верхний и нижний разделы (в центре внимания художника) будут обновляться вручную, поэтому я не беспокоюсь об этом.

Часть, с которой у меня проблемы, - это средняя часть под заголовком «Лучший из остальных». То, что я хочу сделать, это очистить изображения (и ссылки) с семи известных форумов компьютерной графики и отобразить их в областях контента, которые я выложил. Каждый из форумов имеет раздел в верхней части своей страницы, который отображает пять или шесть избранных изображений.

Если вы посмотрите на CGSociety , например: у них есть верхний ряд с шестью показанными фигурами. Я хочу взять три новейших и отобразить их в моем окне контента CGSociety со ссылками на оригинальные темы . Важно, чтобы я тоже получал ссылки, так как весь смысл сайта в том, чтобы привлечь внимание художников, которые этого заслуживают.

Изображения всегда находятся в одинаковых местах и ​​всегда имеют предсказуемый путь вплоть до имени изображения:

т.е.: http://features.cgsociety.org/cgtalk/plugs/"featured image".jpg

Я не знаю, уместно ли это, но xpath для изображений также надежен. Для CGSociety изображение в основном определяется числом, содержащимся в окончательном наборе скобок.

/x:html/x:body/x:div[4]/x:div/x:div/x:table[1]/x:tbody/x:tr/x:td[1]/x:a/x:img

Я прочитал так много разных потоков переполнения стека, но многое из этого происходит у меня над головой. У меня нет большого опыта программирования, но я подозреваю, что то, что я пытаюсь сделать, не так уж сложно.

Итак, вот мои основные вопросы:

  1. Какой самый лучший (самый простой) метод для этого вида очистки? Я продолжаю видеть Python с упоминанием Beautiful Soup или lxml, но кто-то еще рекомендовал PHP с cURL и xPath.

  2. Существует ли какой-либо конкретный метод, который будет оказывать наименьшую нагрузку на форумы-источники? Все эти форумы имеют членство в десятках (или сотнях) тысяч, так что это, вероятно, не очень большая проблема, но я бы хотел сделать это без прямой горячей ссылки, если это возможно.

  3. Я даже направляюсь в правильном направлении?

Также : Я знаю, что соскоб является законной серой зоной. Я планирую запросить разрешение у каждого из участвующих форумов, но мне нужна рабочая модель, чтобы показывать их, когда я спрашиваю.

Любая помощь будет очень, очень признательна. Я думаю, это мог бы быть классный сайт, если я смогу заставить его работать.

Ответы [ 2 ]

4 голосов
/ 01 мая 2011

Я немного обновил свои знания lxml и написал вам некоторый код, который очищает то, что вы хотели от этой страницы:

import lxml.html

images = []

html = lxml.html.parse("http://forums.cgsociety.org/")
table = html.xpath("//div[@class='page']/div[1]/table[1]")[0]

for cell in table.iterfind(".//td"):
    image = {}
    image['img_url'] = cell.find('a/img').get('src')
    image['link_url'] = cell.find('a').get('href')
    images.append(image)

images теперь содержит:

[{'img_url': 'http://features.cgsociety.org/cgtalk/plugs/meind_p.jpg',
  'link_url': 'http://forums.cgsociety.org/showthread.php?s=&threadid=975814&utm_medium=plugblock&utm_source=cgtalk'},
 {'img_url': 'http://features.cgsociety.org/cgtalk/plugs/plugimg.jpg',
  'link_url': 'http://forums.cgsociety.org/showthread.php?s=&threadid=975032&utm_medium=plugblock&utm_source=cgtalk'},
 {'img_url': 'http://features.cgsociety.org/cgtalk/plugs/cg_portfolio_elmoooo.jpg',
  'link_url': 'http://elmoooo.cgsociety.org/gallery/?z=0&utm_medium=plugblock&utm_source=cgtalk'},
 {'img_url': 'http://features.cgsociety.org/cgtalk/plugs/suck_p.jpg',
  'link_url': 'http://forums.cgsociety.org/showthread.php?s=&threadid=973971&utm_medium=plugblock&utm_source=cgtalk'},
 {'img_url': 'http://features.cgsociety.org/cgtalk/plugs/cry_p.jpg',
  'link_url': 'http://forums.cgsociety.org/showthread.php?s=&threadid=972537&utm_medium=plugblock&utm_source=cgtalk'},
 {'img_url': 'http://features.cgsociety.org/cgtalk/plugs/gerrard_p.jpg',
  'link_url': 'http://forums.cgsociety.org/showthread.php?s=&threadid=972012&utm_medium=plugblock&utm_source=cgtalk'}]

Не стесняйтесь, присылайте мне письмо (вы можете найти его в моем профиле), если вам нужна дополнительная помощь.

0 голосов
/ 07 апреля 2011

эти изображения очень просты в обработке, поэтому используйте любой язык, с которым у вас больше опыта. Использование Xpath - хороший подход.

Обязательно загружайте изображения на свой сервер, а не загружайте их с исходного сайта, иначе некоторые сайты заблокируют ваш IP.

Если вы не находите интересным изучение веб-скрапинга и цените свое время, то, вероятно, лучше всего нанять опытного, который сделает это за вас.

...