Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
18 / 18 / 2
Регистрация: 22.09.2015
Сообщений: 22

Requests login session

23.03.2017, 21:43. Показов 1141. Ответов 2

Студворк — интернет-сервис помощи студентам
Пытаюсь авторизоваться через requests на сайте http://www.mdpi.com/ и оставаясь авторизованным спарсить его через (email авторов доступны только авторизированным пользователям).

Задуманное не удается, не понимаю собственно почему, буду рад любому вкладу или толчку в нужном направлении.

Собственно код:

Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import requests
from bs4 import BeautifulSoup
import traceback
 
login_data = {'form[email]': 'wohilas@gmail.com', 'form[password]': '2128506', 'remember': 1,}
base_url = 'http://www.mdpi.com'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0'}
 
session = requests.Session()
session.headers = headers
 
# log_in
s = session.post('https://susy.mdpi.com/user/login', data=login_data)
 
#print(s.text)
#print(session.cookies)
 
 
def make_soup(url):
    try:
        r = session.get(url)
        soup = BeautifulSoup(r.content, 'lxml')
        return soup
    except:
        traceback.print_exc()
        return None
 
 
example_link = 'http://www.mdpi.com/search?journal=medsci&year_from=1996&year_to=2017&page_count=200&sort=relevance&view=default'
 
 
def article_finder(soup):
    one_page_articles_divs = soup.find_all('div', class_='article-content')
    for article_div in one_page_articles_divs:
        a_link = article_div.find('a', class_='title-link')
        link = base_url + a_link.get('href')
        print(link)
        article_soup = make_soup(link)
        grab_author_info(article_soup)
 
 
def grab_author_info(article_soup):
 
    # title of the article
    article_title = article_soup.find('h1', class_="title").text
    print(article_title)
 
    # affiliation
    affiliations_div = article_soup.find('div', class_='art-affiliations')
    affiliation_dict = {}
    aff_indexes = affiliations_div.find_all('div', class_='affiliation-item')
    aff_values = affiliations_div.find_all('div', class_='affiliation-name')
    for i, index in enumerate(aff_indexes):  # 0, 1
        affiliation_dict[int(index.text)] = aff_values[i].text
 
    # authors names
    authors_div = article_soup.find('div', class_='art-authors')
    authors_spans = authors_div.find_all('span', class_='inlineblock')
    for span in authors_spans:
        name_and_email = span.find_all('a')  # name and email
        name = name_and_email[0].text
 
        # email
        email = name_and_email[1].get('href')[7:]
 
        # affiliation_index
        affiliation_index = span.find('sup').text
        indexes = set()
        if len(affiliation_index) > 2:
            for i in affiliation_index.strip():
                try:
                    ind = int(i)
                    indexes.add(ind)
                except ValueError:
                    pass
 
        print(name)
        for index in indexes:
            print('affiliation =>', affiliation_dict[index])
        print('email: {}'.format(email))
 
 
 
if __name__ == '__main__':
    article_finder(make_soup(example_link))
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2017, 21:43
Ответы с готовыми решениями:

requests.Session - ошибка при открытии страницы
Доброго времени. Такая беда. С помощью requests.Session делаю запрос на URLы for link in cat_links: print(link ) h =...

Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым
Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым. Как исправить?

Использование по import requests. ImportError: No module named requests
Приветствую, начну с того, что я самый новый новичек и код который написан ниже это 1й скрипт после helloworld. Итак. Я нашел на...

2
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2017, 03:39
Присмотритесь, когда Вы логинитесь вручную, передается еще один параметр.

Добавлено через 36 минут
Но потом Вы также узнаете, что эти почтовые ящики заполняются JS-ом...

Добавлено через 12 минут
Хотя нет, не совсем так...

попробуйте вот так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import requests
from bs4 import BeautifulSoup
 
login_data = {'form[email]': 'wohilas@gmail.com', 'form[password]': '2128506'}
 
base_url = 'http://www.mdpi.com'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0'}
 
session = requests.Session()
session.headers = headers
 
# log_in
r = session.get('https://susy.mdpi.com/user/login')
bs = BeautifulSoup(r.content, 'lxml')
login_data['form[_token]'] = bs.find('input', id='form__token').get('value')
 
session.post('https://susy.mdpi.com/user/login', data=login_data)
 
 
def make_soup(url):
    try:
        r = session.get(url)
        soup = BeautifulSoup(r.content, 'lxml')
        return soup
    except Exception as e:
        print(e)
        return None
 
 
example_link = 'http://www.mdpi.com/search?journal=medsci&year_from=1996&year_to=2017&page_count=200&sort=relevance&view=default'
 
 
def article_finder(soup):
    one_page_articles_divs = soup.find_all('div', class_='article-content')
    for article_div in one_page_articles_divs:
        a_link = article_div.find('a', class_='title-link')
        link = base_url + a_link.get('href')
        print(link)
        article_soup = make_soup(link)
        grab_author_info(article_soup)
 
 
def grab_author_info(article_soup):
    # title of the article
    article_title = article_soup.find('h1', class_="title").text
    print(article_title)
 
    # affiliation
    affiliations_div = article_soup.find('div', class_='art-affiliations')
    affiliation_dict = {}
    aff_indexes = affiliations_div.find_all('div', class_='affiliation-item')
    aff_values = affiliations_div.find_all('div', class_='affiliation-name')
    for i, index in enumerate(aff_indexes):  # 0, 1
        affiliation_dict[int(index.text)] = aff_values[i].text
 
    # authors names
    authors_div = article_soup.find('div', class_='art-authors')
    authors_spans = authors_div.find_all('span', class_='inlineblock')
    for span in authors_spans:
        name_and_email = span.find_all('a')  # name and email
        name = name_and_email[0].text
 
        # email
        email = name_and_email[1].get('href')[7:]
 
        # affiliation_index
        affiliation_index = span.find('sup').text
        indexes = set()
        if len(affiliation_index) > 2:
            for i in affiliation_index.strip():
                try:
                    ind = int(i)
                    indexes.add(ind)
                except ValueError:
                    pass
 
        print(name)
        for index in indexes:
            print('affiliation =>', affiliation_dict[index])
        print('email: {}'.format(email.replace('.botdefense.please.enable.javaScript.', '@')))
 
 
if __name__ == '__main__':
    article_finder(make_soup(example_link))
Добавлено через 34 секунды
Я сам код особо не смотрел, только поправил то место, где все ломалось.
2
18 / 18 / 2
Регистрация: 22.09.2015
Сообщений: 22
24.03.2017, 12:43  [ТС]
Большое спасибо
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2017, 12:43
Помогаю со студенческими работами здесь

Что твориться с сессиями ? (strListingID = Session('ListingID'); strAccountID = Session('AccountID'); strActive = Session('Active'); )
-----------------------page1.asp-------------------------- Basicrs = Server.CreateObject('ADODB.Recordset'); theSQL='....'; ...

Почему session('aaa') обнуляется при session.Abandon, а session.sessionid остается таким же ?
Народ помогите <% response.write(session.sessionid) response.write(session('aaa')) session.Abandon ...

Cannot open database "relationsdb" requested by the login. The login failed. Login failed for user
Пытаюсь на EntityFramework подключиться к sql: protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) ...

Ошибка "Cannot open database "Pbr" requested by the login. The login failed. Login failed for user 'srv2\admin'."
Winform SQL srever 2012. Локальный В строке `connection.Open();` получаю ошибку: Ошибка "Cannot open database "Pbr"...

что делает команда $user = SELECT * FROM `users` WHERE `Login` = '$_POST[login]'?
Эта команда помещает в переменную user всю строчку из таблицы? Например у меня есть таблица, и есть строка об одном пользователе(см....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru