尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
Referer請求頭的一部分,表示一個來源。
比如在www.google.com 里有一個www.baidu.com 鏈接,那麼點擊這個www.baidu.com ,它的header 信息里就有:Referer=http://www.google.com
Referer 的正確英語拼法是referrer 。由於早期HTTP規範的拼寫錯誤,為了保持向後兼容就將錯就錯了。其它網路技術的規範企圖修正此問題,使用正確拼法,所以目前拼法不統一。還有它第一個字母是大寫。
◆◆Referer的作用:
◆◆
1.防盜鏈。
比如我只允許我自己的網站訪問自己的圖片服務器,假設域名是www.haibao.com,那麼圖片服務器每次取到Referer來判斷一下域名是不是www.haibao.com,如果是就繼續訪問,不是就攔截。
2.防止惡意請求。
比如靜態請求是*.html結尾的,動態請求是*.shtml,那麼由此可以這麼用,所有的*.shtml請求,必須 Referer 為我自己的網站。
一個 HTTP 請求中可能不包含 Referer 或者Referer內容為空,意味著允許直接在瀏覽器的地址欄中輸入一個資源的URL地址直接訪問。
◆◆案例:獲取A股上市公司信息
◆◆
需求
爬取上海證券交易所網站,獲取A股上市公司信息,包括公司代碼,公司簡稱,A股代碼,A股簡稱以及A股總資本和A股流通資本這幾項
審查元素
打開http://www.sse.com.cn/assortment/stock/list/share/
查看A股上市公司信息
發現上市公司條目在class為table-responsive sse_table_T01 tdclickable的div下的table中
查看網頁源碼,發現該div為空,我們用普通的爬取方法是獲取不到數據的
這是因為這個網頁是使用了AJAX技術的動態網頁。它可以通過與服務器進行少量數據交換而在不重新加載整個網頁的情況下對部分網頁進行異步更新。
分析請求數據的URL
打開開發者工具,選Network進行JS分析,點擊清除,更方便定位
點擊網頁中上市A股,進行加載刷新
出現了一個條目,就是我們要找的數據的url,(有的網站會出現一堆的js條目,就需要去分析一下了)
瀏覽器里打開目標驗證一下有沒有我們需要的數據
403碼表示我們沒有權限瀏覽目標地址。這是網站的自我保護行為。
JSON數據的獲取
思路:修改Request-Headers中Cookie,User-Agent,Referer等信息,讓爬蟲模擬人的操作
需要修改的內容可以在Headers中查看:
代碼做到
import requestsurl=’http://query.sse.com.cn/security/stock/getStockListData2.do?&jsonCallBack=jsonpCallback81793&isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageSize=25&pageHelp.pageNo=1&_=1531271694633’headers = { ‘User-Agent’: ‘Mozilla/5.0 (compatible; WOW64; MSIE 10.0; Windows NT 6.2)’, ‘Referer’: ‘http://www.sse.com.cn/assortment/stock/list/share/’,}response=requests.get(url,headers=headers) print(response.text)
>一分鐘解讀,爬蟲中HTTP請求頭中Referer的含義和作用