【问题标题】:BeautifulSoup - Scraping data through paginated table using PythonBeautifulSoup - 使用 Python 通过分页表抓取数据
【发布时间】:2017-04-15 22:03:20
【问题描述】:

我正在通过博彩网站抓取数据 (https://www.pointdevente.parionssport.fdj.fr/parisouverts/rugby)。

我可以在当前页面上抓取有限数量的事件。我面临的问题是我无法浏览表中的其余数据。 我如何转到下一页或链接。

以下是我的代码:

import urllib2
from urllib2 import urlopen
import requests
import dryscrape
from bs4 import BeautifulSoup

dryscrape.start_xvfb()
SessionFDJ = dryscrape.Session()
SessionFDJ.visit('https://pointdevente.parionssport.fdj.fr/parisouverts/rugby/')
ResponseFDJ = SessionFDJ.body()
print(ResponseFDJ)

【问题讨论】:

    标签: python pagination beautifulsoup


    【解决方案1】:

    这是一个客户端渲染的应用程序,没有可以通过 urllib 获取的 HTML 中的表格信息。所有数据都使用 Javascript 检索和呈现。更简单,您不必解析 HTML。

    这是一个包含必要数据的链接 - https://www.pointdevente.parionssport.fdj.fr/api/1n2/offre?sport=964500

    它返回带有所有事件的 JSON,你可以使用 Python json 库来解析它。

    【讨论】:

    • 感谢您的回答。我显然没有以正确的方式做到这一点。将探索 JSON 库。
    【解决方案2】:

    此页面使用JavaScript 获取所有数据并进行更改。在Chrome/Firefox 中使用DevTools 查看浏览器使用了哪些文件/url,你会看到

    https://www.pointdevente.parionssport.fdj.fr/api/1n2/offre?sport=964500

    它以JSON 给出所有数据。

    这个页面似乎使用了API,所以找到API文档你就不需要BeautifulSoup


    import requests
    
    url = 'https://www.pointdevente.parionssport.fdj.fr/api/1n2/offre?sport=964500'
    
    r = requests.get(url)
    
    for x in data:
        print(x['label'])
    

    结果:

    Biarritz-Perpignan
    Kenya-France
    Australie-Japon
    Etats-Unis-Ecosse
    Argentine-Pays de Galles
    Angleterre-Samoa
    Montauban-Colomiers
    Bourgoin-Angoulême
    Aurillac-Mt-de-Marsan
    Dax-Albi
    Vannes-Béziers
    Ospreys-Edimbourg
    Glasgow-Munster
    Sale-Exeter
    Bath-Saracens
    Pau-Clermont
    Zebre-Llanelli
    Angleterre-Australie
    Connacht-Trévise
    Gloucester-Bristol
    Leicester-Northampton
    Cardiff-Ulster
    Grenoble-Montpellier
    Lyon-Castres
    St.Français-Bayonne
    Leinster-Newport
    La Rochelle-Racing 92
    Toulouse-Brive
    Narbonne-Oyonnax
    Worcester-Wasps
    Newcastle-Harlequins
    Toulon-Bordeaux
    Fidji-Canada
    NlleZélande-Russie
    Agen-Carcassonne
    AfriqueduSud-Ouganda
    

    【讨论】:

    • 感谢您的回答。我显然没有以正确的方式这样做。将探索 JSON 库。
    猜你喜欢
    • 2015-04-06
    • 2018-09-21
    • 2018-12-09
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多