Я пытаюсь найти способы очистки веб-сайта недвижимости https://www.brickz.my/ для моего исследовательского проекта. Я пробовал между селеном и красивым супом и решил выбрать красивый суп, это был лучший способ для меня, поскольку структура URL-адреса для каждого объекта недвижимости позволяет моему коду легко и быстро перемещаться по веб-сайту.
Я пытаюсь создать транзакцию базы данных для каждой недвижимости ». Без входа в систему для конкретного объекта будут отображаться только 10 последних транзакций. После входа в систему я могу получить доступ ко всей транзакции для определенного типа собственности. вот пример
без входа я могу получить доступ только к 10 транзакциям для каждого свойства
Я пытаюсь войти в систему, используя запрос в python, но он продолжает выводить меня на страницу без входа в систему и в конечном итоге мне просто удается отбросить 10 последних транзакций вместо всей транзакции. вот пример моего кода входа в python
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.brickz.my/login/", auth=
('email', 'password'))
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'}
soup = BeautifulSoup(page.content, 'html.parser')
#I put one of the property url to be scrapped inside response
response = get("https://www.brickz.my/transactions/residential/kuala-
lumpur/titiwangsa/titiwangsa-sentral-condo/non-landed/?range=2012+Oct-",
headers = headers)
Вот что я использовал для очистки стола
table = BeautifulSoup(response.text, 'html.parser')
table_rows = table.find_all('tr')
names = []
for tr in table_rows:
td = tr.find_all('td')
row = [i.text for i in td]
names.append(row)
Как я могу успешно войти в систему и получить доступ ко всей транзакции? Я слышал о библиотеке Mechanize, но она недоступна для python 3.
Прошу прощения, если мой вопрос непонятен, это моя первая публикация, и я только научился использовать python всего пару месяцев назад.






Простая трассировка HTTP покажет, что выполняется POST для https://www.brickz.my/login/ с email и pw в качестве параметров формы.
Что переводится в эту команду запросов:
session = requests.Session()
resp = session.post('https://www.brickz.my/login/', data = {'email': '<youremail>', 'pw': '<yourpassword'})
if resp.ok:
print("You should now be logged in")
# then use session to request the site, like
# resp = session.get("https://www.brickz.my/whatever")
ВНИМАНИЕ! Не проверено, так как у меня там нет учетной записи.
Это полностью зависит от веб-сайта. Кроме того, на веб-сайте могут быть какие-то функции защиты от ботов, которые блокируют небраузерную авторизацию и правильное использование сайта.
Привет, Гийом, у меня есть решение моей проблемы. В любом случае, цените ваши добрые усилия в помощи мне :)
Попробуйте приведенный ниже код. Что вы видите, когда распечатываете (меняя email и password)? Разве он не печатает Logout в качестве результата?
import requests
from bs4 import BeautifulSoup
URL = "https://www.brickz.my/login/"
payload = {
'email': 'your_email',
'pw': 'your_password',
'submit': 'Submit'
}
with requests.Session() as s:
s.headers = {"User-Agent":"Mozilla/5.0"}
s.post(URL,data=payload)
res = s.get("https://www.brickz.my/")
soup = BeautifulSoup(res.text,"lxml")
for items in soup.select("select#menu_select .nav2"):
data = [' '.join(item.text.split()) for item in items.select("option")[-1:]]
print(data)
Привет, @SIM, я сделал то, что ты старый, и в результате распечатал Выход из системы. могу я узнать, что я могу сделать, чтобы преодолеть это?
Что ты хочешь преодолеть на самом деле? Я пытался иметь в виду, что вы можете увидеть опцию Logout только тогда, когда вы уже вошли в систему.
я извиняюсь за мое невежество, я думал, что выход из системы означает, что я все еще не вошел в систему. Спасибо за разъяснение, мне удалось выбросить таблицу после запуска вашего кода для входа в систему. Спасибо вам огромное !!!!! :) :)
Привет, @Guillaume. Спасибо за быстрый отзыв. Я попробовал ваш совет и поместил недавно объявленный resp в beautifulSoup для стола, но все же столкнулся с той же проблемой. Я поэкспериментировал, вставив поддельный адрес электронной почты и поддельный пароль в файл session.get. У меня все еще есть сообщение «Теперь вы должны войти в систему». Вы хоть представляете, почему это происходит?