Лучший способ хранить данные для сканера на основе Greasemonkey? - PullRequest
8 голосов
/ 28 января 2009

Я хочу сканировать сайт с помощью Greasemonkey и спрашивать, есть ли лучший способ временно сохранить значения, чем с GM_setValue.

Я хочу сканировать контакты в социальной сети и извлекать URL-адреса Twitter из страниц своего профиля.

Мой текущий план состоит в том, чтобы открыть каждый профиль на его собственной вкладке, чтобы он больше походил на обычного пользователя, который просматривает веб-страницы (т.е. браузер загружает css, scrits и изображения). Затем сохраните URL-адрес Twitter с помощью GM_setValue. После сканирования всех страниц профиля создайте страницу, используя сохраненные значения.

Хотя я не очень доволен возможностью хранения. Может быть, есть лучший способ?

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

Ответы [ 5 ]

4 голосов
/ 02 февраля 2009

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

Вы можете создать серверную часть .aspx (или PHP и т. Д.), Которая обрабатывает данные POST и сохраняет их в базе данных.

Любые данные, которые вы хотите получить с одной страницы, могут быть сохранены в форме (скрытой с помощью свойств стиля, если хотите), с использованием имен полей или идентификаторов для идентификации данных. Тогда все, что вам нужно сделать, это сделать действие формы страницей .aspx и отправить форму, используя javascript.

(В качестве альтернативы вы можете добавить кнопку отправки на страницу, позволяющую проверить значения формы перед отправкой в ​​базу данных).

2 голосов
/ 14 февраля 2009

Я думаю, вы должны сначала спросить себя, почему вы хотите использовать Greasemonkey для вашей конкретной проблемы. Greasemonkey был разработан как способ изменить работу пользователя, а не как веб-паук. Хотя вы, возможно, сможете заставить Greasemonkey сделать это с помощью GM_setValue, я думаю, вы найдете, что ваше решение будет хитрым и сложным в разработке. И это потребует многих ручных шагов (таких как открытие всех этих вкладок, очистка переменных Greasemonkey между запусками вашего скрипта и т. Д.).

Требуется ли что-либо, что вы делаете, для выполнения JavaScript на странице? Если это так, вы можете рассмотреть возможность использования Perl и WWW :: Mechanize :: Plugin :: JavaScript . В противном случае, я бы порекомендовал вам сделать все это в простом скрипте Python. Вам захочется взглянуть на модуль urllib2 . Например, взгляните на следующий код (обратите внимание, что он использует cookielib для поддержки файлов cookie, которые вам, скорее всего, понадобятся, если в вашем сценарии требуется вход на сайт):

import urllib2
import cookielib
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
response = opener.open("http://twitter.com/someguy")
responseText = response.read()

Затем вы можете выполнять всю необходимую обработку с помощью регулярных выражений.

1 голос
/ 16 мая 2010

причина желать Greasemonkey является то, что страница для сканирования делает не очень одобряю роботов. Greasemonkey казался самым простым способ сделать гусеничный вид законны.

Фактически заражение вашего сканера через браузер не делает его более легитимным. Вы все еще нарушаете условия использования сайта! Например, WWW :: Mechanize одинаково хорошо подходит для «подмены» вашей строки User Agent, но это и сканирование, если на сайте запрещены пауки / сканеры, незаконно!

1 голос
/ 10 февраля 2009

Рассматривали ли вы Google Gears? Это даст вам доступ к локальной базе данных SQLite, в которой вы можете хранить большие объемы информации.

0 голосов
/ 16 мая 2010

Причина, по которой нужно Greasemonkey, заключается в том, что просматриваемая страница на самом деле не одобряет роботов. Greasemonkey казался самым простым способом придать сканеру легитимность.

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

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

...