簡體   English   中英

具有保護功能的Python BeautifulSoup抓取網頁

[英]Python BeautifulSoup scraping web page that has protection

我是Python的新手。 我最近的項目是從網站獲取奇怪的信息。

這是網址:

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

我正在使用Python和BeautifulSoup進行處理,通過html獲取時我看不到任何奇怪的數據

soup.prettify()

我從上面的代碼中得到的結果僅僅是邏輯代碼,變量和函數。 我認為頁面對數據有一定的保護

我應該怎么做才能從受保護的網頁中獲取奇數信息?

看起來它沒有受到保護,而是僅使用javascript生成。 而且beautifulsoup無法處理JS。 大多數人首先想到的解決方法是使用selenium之類的工具來自動化Web瀏覽器。 您可以使用它在JS運行后獲取html,然后根據需要使用beautifulsoup進行解析。

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM