【问题标题】:Python BeautifulSoup scraping web page that has protectionPython BeautifulSoup 抓取网页有保护
【发布时间】:2018-05-01 16:29:06
【问题描述】:

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

这是网址:

http://bet.hkjc.com/default.aspx?url=football/odds/odds_allodds.aspx&lang=EN&tmatchid=120998

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

soup.prettify()

我得到的上述代码的结果只是逻辑代码、变量和函数。我认为该页面对数据有一定的保护作用

我应该怎么做才能从受保护的网页中获取奇怪的信息?

【问题讨论】:

  • 在“oddsAll”类的第一行,有一个javascript分类器,所以SuperStew用selenium应该是正确的

标签: javascript python html parsing beautifulsoup


【解决方案1】:

看起来它没有受到保护,只是用 javascript 生成的。而且beautifulsoup 不能处理JS。大多数人想到的第一个解决方法是使用 selenium 之类的东西来自动化 Web 浏览器。您可以在 JS 运行后使用它来获取 html,然后根据需要使用 beautifulsoup 进行解析。

【讨论】:

  • 在使用 JavaScript 渲染页面之前,我总是寻找包含我想要的数据的源文件,请参阅我对这个问题的回答。
【解决方案2】:

SuperStew 发布的答案是正确的,但该页面使用 JavaScript 加载“http://bet.hkjc.com/football/odds/odds_allodds.aspx?lang=EN&tmatchid=120998”,此页面包含赔率数据。您没有说明您想要哪种赔率,但下面的代码是获取某些数据的一种方法的示例,如果您需要其他数据,则必须对其进行修改。

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 

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多