python - 网络抓取 - 该网站向我的抓取工具显示不同的内容
问题描述
我为我的大学开发了一个项目,该项目从我的团队中获取数据并进行一些统计操作和其他工作。我得到数据的网站是这样的:http ://www.acb.com/club/estadisticas/id/13
我想获取不同季节的数据,但是当我运行代码时,我得到的内容与网站不同,例如,对于 2014 年的统计数据:
import requests
from bs4 import BeautifulSoup
def scrap_web(page):
pageTree = requests.get(page)
pageSoup = BeautifulSoup(pageTree.content, 'html.parser')
TeamPage = pageSoup.find('div',{"class":'estadisticas_plantilla'}).find('tr',{"class": 'totales'})
ValuesList = TeamPage.text.split('\n')[2:-1]
arr = list(ValuesList)
return arr
urltest = "http://www.acb.com/club/estadisticas/id/13/temporada_id/2014"
print(scrap_web(urltest))
我收到的数据来自本赛季,而不是 2014 赛季。问题可能是内容是通过 javascript 注入到页面中的?
解决方案
这与你的代码有些不同,但它可以让你足够接近你需要的东西,你可以从那里得到它:
url = "http://www.acb.com/club/estadisticas/id/13/temporada_id/2014"
import requests
import pandas as pd
from bs4 import BeautifulSoup as bs
resp = requests.get(url)
soup = bs(resp.text,'lxml')
table = soup.find_all('table')[0]
lower = table.select_one('tr.cabecera_general').findNextSibling()
table_rows = table.find_all('tr')
columns = []
rows = []
for c in lower.find_all('th'):
columns.append(c.text)
for tr in table_rows:
td = tr.find_all('td')
row = [tr.text for tr in td]
rows.append(row)
games = pd.DataFrame(rows,columns=columns)
games
推荐阅读
- apache-spark - 从 PySpark 运行大量 Hive 查询
- arrays - 查找二维数组中有多少个圆的算法
- ios - 拆分视图控制器中的大标题奇怪行为
- javascript - 循环遍历vuejs中api响应的多维数组
- java - 用按键打破 do..while 循环
- java - 该方法未定义类型 T
- android - 无法在 react-native 应用程序中使用 redux-persist 检查持久状态是否已加载到索引/主文件上
- ruby-on-rails - rspec 传递的参数值错误
- jenkins - 重试阶段将构建标记为失败
- bash - 在管理员提示模式下远程触发 powershell 脚本