python采集https://www.shanghairanking.cn/rankings/bcur/202111 这个网站的数据代码
时间: 2023-10-08 09:09:22 浏览: 134
你可以使用requests和BeautifulSoup库来实现对该网站的数据采集和解析。下面是一个简单的示例代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://www.shanghairanking.cn/rankings/bcur/202111'
response = requests.get(url, verify=False) # verify=False是为了忽略SSL证书验证,否则会报错
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', class_='rk-table')
rows = table.find_all('tr')
for row in rows:
cols = row.find_all('td')
if len(cols) == 0:
continue
name = cols[0].text.strip()
rank = cols[1].text.strip()
print(name, rank)
```
该代码会输出该网站上所有大学的名称和排名。注意,本示例中需要忽略SSL证书验证,如果你需要更安全的验证方式,请自行更改代码。
相关问题
python采集https://www.shanghairanking.cn/rankings/bcur/202111 这个网站的20页的数据代码
好的,你可以使用 requests 和 BeautifulSoup 库来实现:
```python
import requests
from bs4 import BeautifulSoup
# 构造请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
}
# 循环请求20页数据
for page in range(1, 21):
url = f"https://www.shanghairanking.cn/rankings/bcur/202111?page={page}"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析数据
for tr in soup.select('#UniversityRanking > tbody > tr'):
rank = tr.select_one('.rk').text.strip()
name = tr.select_one('.univ-name').text.strip()
location = tr.select_one('.location').text.strip()
score = tr.select_one('.total-score').text.strip()
print(rank, name, location, score)
```
这个代码会爬取上海交通大学世界大学学术排名的数据,每页有25条数据,共爬取20页,将排名、学校名称、所在地、总分数输出到控制台。注意需要构造合适的请求头,以免被反爬虫机制拦截。
Python 如何读取:https://www.shanghairanking.cn/_nuxt/static/1685689051/rankings/bcur/2023/payload.js 内的内容
你可以使用 `requests` 库从网页中获取内容,然后使用正则表达式或 `json` 库对获取的内容进行解析。
示例代码如下:
```python
import requests
import re
import json
url = 'https://www.shanghairanking.cn/_nuxt/static/1685689051/rankings/bcur/2023/payload.js'
# 获取网页内容
response = requests.get(url)
# 使用正则表达式获取 json 数据
json_str = re.search(r'var bcurData = (.+?);', response.text).group(1)
# 解析 json 数据
data = json.loads(json_str)
# 打印解析后的数据
print(data)
```
在这个示例代码中,我们首先使用 `requests.get()` 函数获取目标网页的内容,然后使用正则表达式匹配其中的 json 数据,最后使用 `json.loads()` 函数将 json 数据解析为 Python 对象。
需要注意的是,这个示例代码中使用的正则表达式可能不是最优的,具体实现方式应该根据实际情况进行调整。
阅读全文