Найти - Пользователи
Полная версия: Помощь в создании скрипта, который открывает html-страницы от лица заданного пользователя
Начало » Центр помощи » Помощь в создании скрипта, который открывает html-страницы от лица заданного пользователя
1
aibolit
Здравствуйте!

Возникла такая интересная задача. Существует ресурс для музыкантов promodj.com. К особенностям данного ресурса относится существование колонки «здесь были» на странице каждого пользователя, куда заносятся гиперссылки на страницы последних посетителей. Одним словом, если пользователь топ99999 заходит на страницу пользователя топ1, то ссылка на топ99999 какое-то небольшое время провисит на странице топ1.

Это создаёт интересный механизм для промоушена авторов, которые пока не так популярны, но пишут интересную музыку. Что особенно приятно — это то, что данный механизм не нарушает правила сайта и никого не раздражает, в отличие от, скажем, спама в личку со ссылками на чьи-то материалы с «промо-аккаунтов».

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

  1. Скрипт запускается и работает, пока его не закроют, в фоновом режиме
    Скрипт читает из текстового файла ссылки на страницы, и поочерёдно открывает (в фоне) эти страницы
    При открытии страницы передаётся необходимая информация о пользователе, чтобы сервер обработал запрос для конкретного пользователя, а не анонимно
    После завершения работы со всеми ссылками из файла скрипт уходит в сон на заданный промежуток времени (наглеть и забивать весь трафик своей персоной мы тоже не хотим)

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

PS: В качестве продвинутой опции было бы красиво извлекать ссылки на страницы популярных пользователей не из файла, а из разнообразных чартов на сайте наподобие топ-100, но это, полагаю, существенно и без необходимости усложнит задачу.
terabayt
пишите на почту, может и помогу))
aibolit
Итак, код написан. За содействие горячо благодарю пользователя Jabbson с портала Cyberforum, чей код привожу ниже (и уже им пользуюсь):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import requests
import lxml.html
 
 
def get_top():
    url = 'http://promodj.com/top100'
    page = requests.get(url).text                   
    parser = lxml.html.fromstring(page)
    links = parser.cssselect('div.title a')
    return [link.get('href') for link in links]
 
 
def goDoTheMagic():
    with requests.session() as c:
        url = 'http://promodj.com/login/'
        login = 'SuperBoom'
        password = 'superpass'
 
        c.get(url)
        login_data = dict(login=login, password=password, backto='http://promodj.com/g3489107')
        c.post(url, data=login_data, headers={"Referer": "http://promodj.com/"})
        
        top = get_top()
        
        for link in top:
            print("Visiting ", link)
            c.get(link)
 
goDoTheMagic()
4kpt_III
aibolit
Итак, код написан. За содействие горячо благодарю пользователя Jabbson с портала Cyberforum, чей код привожу ниже (и уже им пользуюсь):

И что Вы от нас хотите, собственно?
aibolit
4kpt_III
Что я хотел вчера, подробно описано в заглавной теме. Теперь, когда задача решена, сообщаю об этом пользователям, чтобы они не тратили своё время, и предлагаю полученное решение задачи тем посетителям, которым оно пригодится.

Впрочем, скрипт запускается лишь один раз, в то время как удобнее было бы, чтобы он висел в фоне и запускал обход в цикле через заданный дилей, если есть желание, можете помочь с этим кодом — но тут через какое-то время я должен справиться самостоятельно)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB