Javascript Python BeautifulSoup具有保护功能的抓取网页

Javascript Python BeautifulSoup具有保护功能的抓取网页,javascript,python,html,parsing,beautifulsoup,Javascript,Python,Html,Parsing,Beautifulsoup,我是Python新手。我最近的项目是从一个网站上获取奇怪的信息 以下是网址: 我正在使用Python和BeautifulSoup进行处理,在获取html时,我看不到任何奇怪的数据 soup.prettify() 我从上面的代码得到的结果只是逻辑代码、变量和函数。我认为这个页面对数据有一些保护 如何从受保护的网页中获取奇怪的信息?看起来它没有受到保护,只是用javascript生成的。而beautifulsoup无法处理JS。大多数人的第一项工作是使用类似的工具自动化web浏览器。您可以在JS

我是Python新手。我最近的项目是从一个网站上获取奇怪的信息

以下是网址:

我正在使用Python和BeautifulSoup进行处理,在获取html时,我看不到任何奇怪的数据

soup.prettify()
我从上面的代码得到的结果只是逻辑代码、变量和函数。我认为这个页面对数据有一些保护


如何从受保护的网页中获取奇怪的信息?

看起来它没有受到保护,只是用javascript生成的。而beautifulsoup无法处理JS。大多数人的第一项工作是使用类似的工具自动化web浏览器。您可以在JS运行后使用它获取html,然后根据需要使用beautifulsoup进行解析

它看起来没有受到保护,只是用javascript生成的。而beautifulsoup无法处理JS。大多数人的第一项工作是使用类似的工具自动化web浏览器。您可以在JS运行后使用它获取html,然后根据需要使用beautifulsoup进行解析

Supersew发布的答案是正确的,但该页面使用JavaScript加载“”,该页面包含赔率数据。您没有说明您想要的几率,但下面的代码是一个示例,说明了获取某些数据的一种方法,如果您想要其他数据,则必须对其进行修改

import bs4
import requests
url = "http://bet.hkjc.com/football/odds/odds_allodds.aspx?lang=EN&tmatchid=120998"
page = requests.get(url)
soup = bs4.BeautifulSoup(page.text,'lxml')
tOdds = soup.findAll('table', {'class':"tOdds"})
for tOdd in tOdds:
    print (tOdd.text)
产出:

  Jong PSV Eindhoven(Home) Draw Jong Utrecht(Away)   1.53 4.00 4.60 
  Jong PSV Eindhoven(Home) Draw Jong Utrecht(Away)   1.97 2.45 4.70 
  Jong PSV Eindhoven[-1](Home) Draw Jong Utrecht[+1](Away)   2.45 3.60 2.26 
  Line High Low  [3/3.5]2.021.70
  Line High Low   [1.5]2.191.60
     1.44    18.00    2.65   
  0 1 2 3 4 5 6 7+   18.00 6.60 4.10 3.65 4.50 6.70 11.00 14.00 
  Odd Even   1.90 1.80 
  H H H D D D A A A   H D A H D A H D A   2.30 14.00 34.00 4.70 6.50 10.50 19.00 14.00 7.50 

Supersew发布的答案是正确的,但该页面使用JavaScript加载“”,该页面包含赔率数据。您没有说明您想要的几率,但下面的代码是一个示例,说明了获取某些数据的一种方法,如果您想要其他数据,则必须对其进行修改

import bs4
import requests
url = "http://bet.hkjc.com/football/odds/odds_allodds.aspx?lang=EN&tmatchid=120998"
page = requests.get(url)
soup = bs4.BeautifulSoup(page.text,'lxml')
tOdds = soup.findAll('table', {'class':"tOdds"})
for tOdd in tOdds:
    print (tOdd.text)
产出:

  Jong PSV Eindhoven(Home) Draw Jong Utrecht(Away)   1.53 4.00 4.60 
  Jong PSV Eindhoven(Home) Draw Jong Utrecht(Away)   1.97 2.45 4.70 
  Jong PSV Eindhoven[-1](Home) Draw Jong Utrecht[+1](Away)   2.45 3.60 2.26 
  Line High Low  [3/3.5]2.021.70
  Line High Low   [1.5]2.191.60
     1.44    18.00    2.65   
  0 1 2 3 4 5 6 7+   18.00 6.60 4.10 3.65 4.50 6.70 11.00 14.00 
  Odd Even   1.90 1.80 
  H H H D D D A A A   H D A H D A H D A   2.30 14.00 34.00 4.70 6.50 10.50 19.00 14.00 7.50 

在“oddsAll”类的第一行,有一个javascript分类器,因此Supersew应该使用seleniumin正确在“oddsAll”类的第一行,有一个javascript分类器,因此Supersew应该使用seleniumI正确在使用javascript呈现页面之前始终查找包含我想要的数据的源文件,查看我对这个问题的回答。在使用JavaScript呈现页面之前,我总是查找包含所需数据的源文件,请参阅我对这个问题的回答。