[英]Web Scraping in Python with a Login Page
我正在使用此代碼嘗試進行一些Web抓取。 我正在嘗試使用請求和漂亮的湯來訪問我的學校成績,並且登錄時遇到很多麻煩。我只是遇到錯誤:
TypeError: 'NoneType' object has no attribute '__getitem__'
這是我正在使用的代碼:
import requests
from bs4 import BeautifulSoup
headers = {
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
login_data = {
'name': 'my_username',
'pass': 'my_password',
'form_id': 'new_login_form',
'op': 'Login'
}
with requests.Session() as s:
url = 'https://irc.d125.org'
r = s.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'html5lib')
login_data['form_build_id'] = soup.find('input', attrs={'name': 'form_build_id'})['value']
r = s.post(url, data=login_data, headers=headers)
print(r.content)
任何幫助表示贊賞! 非常感謝!
當按下登錄按鈕時,站點將發送帶有登錄信息的xhr請求。 以下方法應該起作用,只需在提供的空白處替換您的用戶名和密碼即可。
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
login_data = {
"UserName": "REPLACE_USER", # Enter Username
"Password": "REPLACE_PASSWORD", # Enter password
"RememberMe": False,
}
with requests.Session() as s:
url = 'https://irc.d125.org/Login'
s.get(url, headers=headers)
r = s.post(url, data=login_data)
print(r.text)
在發布數據之前,您應該使用某種方式呈現網頁的javascript。 這樣做的一個好方法是將您的登錄腳本與Splash
一起放入Scrapy
蜘蛛中:
您可以使用硒。 我也用它來從學校頁面獲得成績。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.