使用python登录网站并进行网页抓取

使用python登录网站并进行网页抓取,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正试图找出方法,为我的研究项目在一个房地产网站上搜刮网页。我一直在selenium和beautiful soup之间进行尝试,并决定选择beautiful soup对我来说是最好的方式,因为每个房地产的url结构允许我的代码轻松快速地浏览网站 我正在尝试为每个不动产建立一个数据库事务。如果不登录,则仅显示特定属性的10个最新事务。通过登录,我可以访问特定类型财产的整个交易。这是一个例子 我尝试使用python中的请求登录,但它一直将我带到未登录的页面,结果,我只是设法放弃了最近的10个事务

我正试图找出方法,为我的研究项目在一个房地产网站上搜刮网页。我一直在selenium和beautiful soup之间进行尝试,并决定选择beautiful soup对我来说是最好的方式,因为每个房地产的url结构允许我的代码轻松快速地浏览网站

我正在尝试为每个不动产建立一个数据库事务。如果不登录,则仅显示特定属性的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库,但它不适用于Python3


如果我的问题不清楚,我很抱歉,这是我第一次发帖,我几个月前才学会使用python。

一个简单的HTTP跟踪将显示发到
https://www.brickz.my/login/
使用
电子邮件
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")
session=requests.session()

resp=会话。post('https://www.brickz.my/login/,data={'email':'','pw':'试试下面的代码。当你打印它时,你看到了什么(更改
电子邮件和
密码)
)?结果不是打印
注销

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)

您好@Guillaume。感谢您的快速反馈。我尝试了您的建议,并将新声明的resp放在表格的beautifulSoup中,但我仍然面临同样的问题。我做了一些实验,在会话中插入了假电子邮件和假密码。get。我仍然得到“您现在应该登录了”。你知道为什么会发生这种情况吗?这完全取决于网站。此外,网站可以有一些防僵尸程序的保护功能,阻止非浏览器登录和正确使用网站。嗨,纪尧姆,我找到了解决我问题的方法。无论如何,感谢你对我的帮助:)你好@SIM,我做了你以前做过的事,结果打印了注销。我能知道我能做些什么来克服这个问题吗?实际上,你想克服什么?我的意思是,你只有在登录后才能看到
注销
选项。很抱歉我不知道,我认为注销意味着我还没有登录。谢谢你的澄清,我成功地做到了在运行您的代码登录后立即废弃表格。非常感谢您!!!!!:):)