gpt4 book ai didi

python - 使用 beautifulsoup 解析站点

转载 作者:行者123 更新时间:2023-12-01 21:42:39 28 4
gpt4 key购买 nike

我正在尝试学习如何使用 python 解析 html我目前陷入了 soup.findAll 返回一个空数组的困境,因此可以找到一些元素这是我的代码:

import requests
import urllib.request
import time
from bs4 import BeautifulSoup
headers = {"User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}
url = 'https://www.oddsportal.com/matches/tennis/20191114/'

responce = requests.get(url,headers=headers)

soup = BeautifulSoup(responce.text, 'html.parser')

info = soup.findAll('tr', {'class':'odd deactivate'})

print(info)

我将不胜感激任何帮助,提前致谢

最佳答案

i'm trying to learn how to parse html with python

您碰巧选择了一个对于网页抓取不太适合初学者的网页。一般来说,大多数网页使用以下两种常见方法中的一种或两种来加载/显示数据:

  • 用户向服务器发出请求(例如,访问页面)。服务器从数据库获取必要的数据。服务器使用模板引擎生成 HTML 响应,并返回用户浏览器呈现的响应。
  • 用户向服务器发出请求。服务器返回一个HTML 骨架响应,通过以下方式动态填充数据发出其他请求/使用 API 等。

您选择的网页属于第二种类型。只是因为你可以看到<tr> Chrome 开发工具“元素”选项卡中的元素并不意味着服务器发送给您的内容。通过查看 Chrome 开发工具的网络选项卡,您可以看到向这两个资源发出了请求: https://fb.oddsportal.com/ajax-next-games/2/0/1/20191114/yje3d.dat?=1574007087150 https://fb.oddsportal.com/ajax-next-games-odds/2/0/X0/20191114/1/yje3d.dat? =1574007087151

(查询字符串参数对您来说不会相同。除非您提供正确的有效负载,否则访问这些网址也不会很有趣。)

第一个资源似乎是一个发出请求的 jQuery 脚本,其响应包含 HTML(这是您的表)。它看起来像这样:

您可以看到他们似乎为每场比赛分配了唯一的 ID。本例中 Giron Marcos 与 Holt Brandon 的 ID 为 ATM9GmXG .

第二个资源类似。它也是一个 jQuery 脚本,似乎正在向其主要 API 发出请求。这次的响应是 JSON,这对于网络抓取来说总是理想的。这是其中的一部分(注意相同的 ID):

关于python - 使用 beautifulsoup 解析站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58902311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com