【问题标题】:Python parser outputs NonePython 解析器输出无
【发布时间】:2017-05-15 16:52:45
【问题描述】:

一般来说,我尝试从该站点获取至少一些标签,但始终不提供。我不知道如何解决这个问题。

有一个按钮Tickets,从侧面按下后有一个附加面板,所以我想解析它,我不明白怎么做。据我了解,单击后不会立即加载此选项卡,下一步该怎么做我不明白。附言刚开始学。

# coding: utf-8-sig
import urllib.request
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"}

def get_html(url):

    request = urllib.request.Request(url,None,headers)
    response = urllib.request.urlopen(request)
    return response.read()

def parse(html):

    soup = BeautifulSoup(html,"html.parser")
    table = soup.find('body', class_='panel-open')
    print(table)

def  main():
    parse(get_html('http://toto-info.co/'))

if __name__ == '__main__':
    main()

【问题讨论】:

  • 这样的网站有时可以在 Selenium 的帮助下被抓取(see selenium-python.readthedocs.io)。使用 Selenium 可以做的一件事是使用 webdriverexecute_script 方法来执行 Javascript 代码。例如,您可以执行document.documentElement.outerHTML。我了解 HTML5 API 可以写入本地商店;但是,我还没有弄清楚细节。

标签: python python-3.x parsing html-parsing


【解决方案1】:

那是因为网页http://toto-info.co/的body元素不包含类属性“panel-open”。

您可以通过更改代码中的行来查看 body 元素包含的内容:

table = soup.find('body', class_='panel-open')

table = soup.find('body')

现在将打印 body 元素及其包含的所有元素。

正如您将看到的那样,除了脚本之外,body 元素几乎不包含任何内容,如果您想获取脚本来呈现,您将不得不使用其他技术,我建议您在 Google 上搜索初学者,例如Web-scraping JavaScript page with Python.

如果您有兴趣,可以按类选择某些内容的示例是:

table = soup.find('div', class_='standalone')

但是从这个页面中选择:

<div class="standalone" data-app="" id="app"></div>

但这是关于此页面上没有 JavaScript 显示的所有标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多