首页 > 解决方案 > HTTPError:401客户端错误:通过python而不是通过chome浏览器访问网站时

问题描述

import requests
from bs4 import BeautifulSoup
import pandas as pd
import datetime as dt,time
import os
from  pathlib import Path
import pandas as pd
import numpy as np 
import datetime  as dt
from  pathlib import Path



df= ['ACC', 'ADANIENT', 'ADANIPORTS', 'AMARAJABAT', 'AMBUJACEM', 'APOLLOHOSP', 'APOLLOTYRE', 'ASHOKLEY', 'ASIANPAINT', 'AUROPHARMA', 'AXISBANK', 'BAJAJ-AUTO', 'BAJAJFINSV', 'BAJFINANCE', 'BALKRISIND', 'BANDHANBNK', 'BANKBARODA',
 'BATAINDIA', 'BEL', 'BERGEPAINT', 'BHARATFORG', 'BHARTIARTL', 'BHEL', 'BIOCON', 'BOSCHLTD', 'BPCL', 'BRITANNIA','CADILAHC', 'CANBK', 'CHOLAFIN', 'CIPLA', 'COALINDIA', 'COFORGE', 'COLPAL', 'CONCOR', 'CUMMINSIND', 'DABUR', 'DIVISLAB', 'DLF', 'DRREDDY', 'EICHERMOT', 'ESCORTS', 'EXIDEIND', 'FEDERALBNK', 'GAIL', 'GLENMARK', 'GMRINFRA', 'GODREJCP', 'GODREJPROP', 'GRASIM', 'HAVELLS', 'HCLTECH', 'HDFC', 'HDFCBANK', 'HDFCLIFE', 'HEROMOTOCO', 'HINDALCO', 'HINDPETRO', 'HINDUNILVR', 'IBULHSGFIN', 'ICICIBANK', 'ICICIPRULI', 'IDEA', 'IDFCFIRSTB', 'IGL',
 'INDIGO','INDUSINDBK','INFRATEL','INFY','IOC','ITC', 'JINDALSTEL', 'JSWSTEEL', 'JUBLFOOD', 'KOTAKBANK', 'L&TFH', 'LICHSGFIN', 'LT', 'LUPIN', 'M&M', 'M&MFIN', 'MANAPPURAM', 'MARICO','MARUTI','MCDOWELL-N','MFSL','MGL', 'MINDTREE','MOTHERSUMI', 'MRF', 'MUTHOOTFIN', 'NATIONALUM', 'NAUKRI','NESTLEIND','NMDC', 'NTPC','ONGC', 'PAGEIND','PEL', 'PETRONET',
 'PFC', 'PIDILITIND','PNB', 'POWERGRID','PVR', 'RAMCOCEM','RBLBANK', 'RECLTD','RELIANCE', 'SAIL','SBILIFE', 'SBIN','SHREECEM','SIEMENS','SRF','SRTRANSFIN','SUNPHARMA','SUNTV','TATACHEM', 'TATACONSUM','TATAMOTORS', 'TATAPOWER','TATASTEEL', 'TCS','TECHM', 'TITAN','TORNTPHARM', 'TORNTPOWER', 'TVSMOTOR', 'UBL','ULTRACEMCO','UPL', 'VEDL', 'VOLTAS','WIPRO', 'ZEEL']

for k in df:
    print(k)
    k1=k
    k=k.replace('&','%26')
    url = "https://www.nseindia.com/api/option-chain-equities?symbol="+str(k)
  #  headers = {"user-agent": "Mozilla/5.0"}
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/80.0.3987.132 Safari/537.36','Accept-Language': 'en-US,en;q=0.9','Accept-Encoding': 'gzip, deflate'}
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    data1 = response.json()
    if not  data1:
        print("empty @ "+ k)
    else:
     
        data=data1["records"]["data"]
        columns = pd.DataFrame(data[0]).transpose().columns
        final_data=pd.DataFrame(columns=columns)
        for i in range(0,len(data)):
          z=pd.DataFrame(data[i])
          zz=z.transpose()
          if(len(zz.index)==3):
             final_data=final_data.append(zz.loc[[zz.index[2]]]) 
          elif(len(zz.index)==4):
             final_data=final_data.append(zz.loc[[zz.index[2]]]) 
             final_data=final_data.append(zz.loc[[zz.index[3]]])  
        final_data=final_data.reset_index() 
        final_data=final_data.rename(columns = {'index':'option_type'})
        final_data=final_data[(final_data['openInterest']>0)&(final_data['changeinOpenInterest']>0)].reset_index(drop=True)
        path=Path('E:\code and finance\Data\FNO\Equity\options',k1,(dt.datetime.today()).strftime("%d-%m-%Y")+".xlsx")
        final_data.to_excel(path)

我正在使用代码来获取数据,但最近我开始收到 HTTPError: 401 Client Error: when access a website by python but not by chrome browser. 我应该怎么做才能像我在 python 中一样访问网站。该链接在 chrome 中有效,但在 python 中无效

标签: pythonhtmlhttpweb-scraping

解决方案


推荐阅读