背景
在浏览目标网页的时候,发现该网页不会请求接口。这意味着我用python requests去请求,得到的是初始的网页内容。而我点击过滤功能,也不会请求接口。

那么它是怎么做到过滤的呢?我重新加载页面,发现它会get一个document,并返回响应页面的全部内容:

接着发现cookie里面,有我设置的过滤字段:

这就说明它是通过cookie去请求直接拿到document进行展示的
代码
既然知道是设置cookie,那么请求时带上即可。于是写了下面代码:
- cookie = {
- 'homepage_table_customize': "%5B%221h%20%25%22%2C%2224h%20%25%22%2C%227d%20%25%22%2C%22Market%20Cap%22%2C%22Volume(24h)%22%2C%22Circulating%20Supply%22%2C%22Volume(7d)%22%2C%22Volume(30d)%22%2C%22Volume%20%2F%20Mcap%22%5D",
- 'PAGE_SIZE': '20'}
- res = requests.get('https://coinmarketcap.com', cookies=cookie)
- res.encoding = 'utf-8'
- soup = BeautifulSoup(res.text, 'html.parser')
其中,cookie里面的值需要保持原来的url编码格式,不要去解码。