gpt4 book ai didi

python - 无法从网页中抓取静态信息

转载 作者:行者123 更新时间:2023-12-01 00:40:52 25 4
gpt4 key购买 nike

我在 python 中创建了一个脚本,用于使用凭据登录网页,然后从另一个链接解析一条信息SIGN OUT(该脚本应该重定向到该链接)确保我确实登录了。

Website address

我尝试过:

import requests
from bs4 import BeautifulSoup

url = "https://member.angieslist.com/gateway/platform/v1/session/login"
link = "https://member.angieslist.com/"

payload = {"identifier":"usename","token":"password"}

with requests.Session() as s:
s.post(url,json=payload,headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36",
"Referer":"https://member.angieslist.com/member/login",
"content-type":"application/json"
})

r = s.get(link,headers={"User-Agent":"Mozilla/5.0"},allow_redirects=True)
soup = BeautifulSoup(r.text,"lxml")
login_stat = soup.select_one("button[class*='menu-item--account']").text
print(login_stat)

当我运行上面的脚本时,我收到 AttributeError: 'NoneType' object has no attribute 'text' 这个错误,这意味着我在登录过程中出错了,因为我希望获得的信息parse SIGN OUT 是静态内容。

如何从该网页解析此SIGN OUT信息?

最佳答案

该网站需要 JavaScript 才能使用。尽管您从登录 API 正确生成了登录 token ,但当您进入主页时,它会进行多个额外的 API 调用,然后更新页面。

所以这个问题与登录不起作用无关。为此,您需要使用诸如 Selenium 之类的东西

from selenium import  webdriver

driver = webdriver.Chrome()

driver.get("https://member.angieslist.com/member/login")
driver.find_element_by_name("email").send_keys("none@getnada.com")
driver.find_element_by_name("password").send_keys("NUN@123456")
driver.find_element_by_id("login--login-button").click()
import time
time.sleep(3)
soup = BeautifulSoup(driver.page_source,"lxml")
login_stat = soup.select("[id*='menu-item']")

for item in login_stat:
print(item.text)
print(login_stat)
driver.quit()

我在这里混合了 bs4selenium 以方便您使用,但如果您愿意,您也可以只使用 selenium

Data

关于python - 无法从网页中抓取静态信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com