我需要使用 Python 下載網頁的內容。
我需要的是來自 Space-Track.org 網站的特定衛星的 TLE。
我需要抓取的網址示例如下:
https://www.space-track.org/basicspacedata/query/class/gp/NORAD_CAT_ID/44235/format/tle/emptyresult/show
在我撰寫/復制的不成功代碼下方:
import requests
url = 'https://www.space-
track.org/basicspacedata/query/class/gp/NORAD_CAT_ID/44235/format/tle/emptyresult/show'
res = requests.post(url)
html_page = res.content
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_page, 'html.parser')
text = soup.find_all(text=True)
print(text)
res.post(url) 回傳回應 [204] 并且我無法訪問網頁的內容。
這會因為需要登錄而發生嗎?
我必須承認我沒有使用 Python 的經驗,而且我自己也沒有這方面的知識。
我能做的是操作文本檔案,從 DevTools 頁面我可以獲取 HTML 檔案并推斷文本,但我如何以編程方式執行此操作?
uj5u.com熱心網友回復:
要訪問您提到的 url,您需要 USERNAME 和 PASSWORD 授權。
為此(根據您的需要定制):
import mechanize
from bs4 import BeautifulSoup
import urllib2
import cookielib ## http.cookiejar in python3
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open("https://id.arduino.cc/auth/login/")
br.select_form(nr=0)
br.form['username'] = 'username'
br.form['password'] = 'password.'
br.submit()
print br.response().read()
uj5u.com熱心網友回復:
我無權訪問此 API,因此請接受我的建議,但您也應該嘗試使用requests.get而不是requests.post.
為什么?因為requests.postPOST 資料到服務器,而requests.getGET 資料來自服務器。GET 和 POST 被稱為 HTTP 方法,要了解有關它們的更多資訊,請參閱https://www.tutorialspoint.com/http/http_methods.htm。由于 Web 瀏覽器使用 GET,因此您應該嘗試一下。
uj5u.com熱心網友回復:
我以前沒有看到它很糟糕,但 Space-Track 已經在他們的網站上提供了解決方案:
https://www.space-track.org/documentation#howto-api_python
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/471072.html
上一篇:“NoneType”物件沒有屬性“文本”,beautifulsouppython
下一篇:網路抓取資料框
