爬虫遇到js跳转反爬

爬一个网站时,发现如果从来没打开过的链接使用request.get得到的内容和浏览器打开的不一样,研究了下是因为做了js跳转反爬。但是为什么浏览器打开了一次之后就能正常get到需要的内容呢?

我并没有用过python,有用过php的curl,也有用过c语言的curl.
推荐学习c语言的curl(并不用写c代码 ,只是通过c语言的curl 学习抓取网页所需用到的参数).
相关文章可以参考下
文章地址:https://www.cnblogs.com/meteoric_cry/p/3994893.html
或者自行搜索CURLcode 定义 相关.

你的问题解决方案是
  先通过浏览器获取到网址对应的 curl  
  在将这些参数添加到python-curl中(即模拟浏览器访问),
  每一个网站下多个地址可能某些参数是不一样的,
  但他们只要策略一样 就可以手动一次  全站使用.



下面是 用谷歌浏览器获得的某网址的curl
举例csdn为例  
例如user-agent 即浏览器标识 ,
curl功能有很多  也可以抓取ssl页面,
也可以cookie 用户登录等等 , 
一些服务器程序也是利用这些头部信息进行来源分析,这些都在CURLcode 定义中.
     
curl "https://ask.csdn.net/questions/7452100?answer=53434076" ^
  -H "authority: ask.csdn.net" ^
  -H "cache-control: max-age=0" ^
  -H "sec-ch-ua: ^\^" Not;A Brand^\^";v=^\^"99^\^", ^\^"Google Chrome^\^";v=^\^"91^\^", ^\^"Chromium^\^";v=^\^"91^\^"" ^
  -H "sec-ch-ua-mobile: ?0" ^
  -H "upgrade-insecure-requests: 1" ^
  -H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36" ^
  -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" ^
  -H "sec-fetch-site: none" ^
  -H "sec-fetch-mode: navigate" ^
  -H "sec-fetch-user: ?1" ^
  -H "sec-fetch-dest: document" ^
  -H "accept-language: zh-CN,zh;q=0.9" ^
  -H "cookie: "**************" ^
  --compressed

有种可能, 是网站判断了 来源 后面还有一台负载均衡,cdn之类的服务器或者是策略, 如果正常访问了一次,就会生成个临时的文件,所以爬取的并不是服务器真正意义上的数据, 是间接爬取的,可能你的http请求头有问题吧

感谢大佬回答,刚开始学爬虫不是很明白。没浏览过的网页,用BeautifulSoup解析出来结果在下面截图,在浏览器打开一次就能正常解析。代码也贴了,求大佬指导。

# coding:utf-8
import requests #请求网页信息模块
import re
import os
from bs4 import BeautifulSoup
import pandas as pd
import time
import lxml

lujing=r'C:\Users\19093068\Music'
baseurl = 'http://www.pbc.gov.cn/zhengwugongkai/4081330/4081344/4081407/4081705/index.html'
date1='2017-03-01'
proxies={
'http':'http://10.37.224.1:8080'
}
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);',
           'Referer': 'http://www.pbc.gov.cn/',
           'DNT': '1',
           'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
           'Connection': 'keep-alive',
           'Accept-Language': 'zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7',
           'Accept-Encoding': 'gzip, deflate, br'}

res = requests.get(baseurl,proxies=proxies)
res.encoding = 'utf-8'
bs = BeautifulSoup(res.text, 'html.parser')  # 解码,'html.parser'是解析器
a=bs.find('ul',class_="txtlist")
d=a.find_all('li')
for e in d:
    f=e.find('span',class_="date")
    if f.text<=date1:
        print("已导出完成")
        break
    g=e.find('a')
    h = g.get('href')
    l='http://www.pbc.gov.cn'+h
    print(l)

    res2 = requests.get(l,proxies=proxies,headers=headers)
    res2.encoding = 'utf-8'
    bs2 = BeautifulSoup(res2.text, 'html.parser')  # 解码,'html.parser'是解析器
    print(bs2)
    time.sleep(1)
    name=bs2.find('title').text
    print(name)
    tables=pd.read_html(res2.text)[0]
    excle_name=name+'.xlsx'
    os.chdir(lujing)
    tables.to_excel(excle_name,header=0,index=0)