【问题标题】:How to scrape dynamic website created on toggle button with python?如何使用python抓取在切换按钮上创建的动态网站?
【发布时间】:2018-04-05 14:32:57
【问题描述】:

我想从 www.crackwatch.com 抓取表格网站布局 当您单击网站右上角的切换按钮时,它会将布局更改为表格形式,其中列出了更多游戏历史...我想抓取那里的所有游戏...

问题是,我如何下载表格格式布局网站?看起来,当我点击按钮时,该网站是动态生成的,因此我没有网站地址或类似的元素来抓取......

我必须使用 Selenium 或类似产品吗?

【问题讨论】:

    标签: python selenium dynamic web-scraping


    【解决方案1】:

    你可以结合使用两个 Python 库:BeautifulSoup 和 Selenium

    如果内容在点击切换按钮后被加载到表格中,那么这将需要您使用 Selenium 并将 driver.page_source 传递给 BeautifulSoup,因为内容是在内部动态创建的网站而不包含在原始源 HTML 中(这将是 IMO 最直观的实现):

    soup = BeautifulSoup(driver.page_source, 'html.parser')
    
    table = soup.find_all('tbody', {'id': 'games-table-adder'})
    
    for row in table:
    
        #Extract the information that you are interested in here
    

    抱歉,如果此功能不完整,无法在防火墙上进行测试。

    但是,如果该表包含在原始源 HTML 中,那么您可以通过将网站的 URL 传递给 Python 的请求库然后将其传递给 BeautifulSoup 来访问该表,类似于上面:

    from bs4 import BeautifulSoup
    
    import requests
    
    header = {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'}
    
    link = 'insert your link here'
    
    url  = requests.get(link, headers = header).text
    
    soup = BeautifulSoup(url, 'html.parser')
    

    希望这能让你开始。

    【讨论】:

    • 谢谢,我认为它至少有帮助,我在普通 html 中找不到“games-table-adder”,所以我想我必须先进入 Selenium ......
    • 尝试右键单击您有兴趣拉取的元素,然后单击“检查元素”
    • 好的,我如何检查动态元素?我的意思是它是哪个元素,我怎样才能看到它在做什么?
    • 抱歉延迟回复您。至于检查动态元素,您应该仍然可以右键单击您有兴趣从普通浏览器中抓取的元素,然后在通过 Selenium 访问网页后将这些元素传递给 BeautifulSoup
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多