当前位置: 首页 > 知识库问答 >
问题:

使用Python解析HTML[重复]

巢宏富
2023-03-14

我想使用Python创建一个函数来获取网站内容,例如获取网站组织内容。

在代码中,组织是东京大学:

<tr class="odd">
  <th>Organization:</th>
  <td>University of Tokyo</td>
</tr>

我如何能直接获得网站内容,而不需要任何新的安装,如获得http://www.ip-adress.com/ip_tracer/157.123.22.11

共有3个答案

濮阳宏硕
2023-03-14

使用urllib2.urlopen,您将收到403禁止访问错误,因为此网站正在通过检查它是否被识别的用户代理访问来过滤访问。所以这是完整的事情:

import urllib2
import lxml.html as lh

req = urllib2.Request("http://www.ip-adress.com/ip_tracer/157.123.22.11", headers={'User-Agent' : "Magic Browser"})
html = urllib2.urlopen(req).read()
doc=lh.fromstring(html)
print ''.join(doc.xpath('.//*[@class="odd"]')[-1].text_content().split())
>>> 
Organization:ZenithDataSystems
庄文栋
2023-03-14

使用美肤汤:

import bs4

html = """<tr class="odd">
  <th>Organization:</th>
  <td>University of Tokyo</td>
</tr>
"""
soup = bs4.BeautifulSoup(html)
univ = soup.tr.td.getText()
assert univ == u"University of Tokyo"

编辑:

如果需要先阅读HTML,请使用urllib2

import urllib2

html = urllib2.urlopen("http://example.com/").read()
柴辰阳
2023-03-14

我喜欢美化汤,它可以很容易地访问超文本标记语言字符串中的数据。实际的复杂性取决于超文本标记语言是如何形成的。如果超文本标记语言使用“id”和“class”,那很容易。如果不是,你依赖于更静态的东西,比如“第一个div,第二个列表项,…”,如果超文本标记语言的内容变化很大,那就太可怕了。

要下载超文本标记语言,我引用了美汤文档中的示例:

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen("http://www.icc-ccs.org/prc/piracyreport.php")
soup = BeautifulSoup(page)
for incident in soup('td', width="90%"):
    where, linebreak, what = incident.contents[:3]
    print where.strip()
    print what.strip()
    print
 类似资料:
  • 问题内容: 我正在将我的某些网络抓取代码从R转换为Python(我无法让geckodriver与R一起使用,但它与Python一起使用)。无论如何,我试图了解如何使用Python解析和读取HTML表。快速背景,这是我的R代码: 我将HTML页面解析为doc对象。然后,我将以开始,并通过更大的数字,直到看到所需的数据。在这种情况下,我去看了想要的数据。然后,我将读取该HTML表并将其分配给WebEl

  • 本文向大家介绍Python中使用HTMLParser解析html实例,包括了Python中使用HTMLParser解析html实例的使用技巧和注意事项,需要的朋友参考一下 前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交由HTMLParser解析,初次使用这个库,在查官方文档时也遇到了一些问题,在这里写下来

  • 我的GUI中有一个显示连接状态的显示按钮(带绿色检查的按钮表示连接已建立,带红色表示没有连接)我必须使用我的代码检查状态。我正在解析该特定标题栏类名(容器流体)的内容。由此,我正在解析该显示按钮的显式内容。 在此之后,我解析该按钮的一些显式内容,并确定连接是否存在。 但是如果我使用class="powerOn icon-ok-sign ",我会得到错误: 不允许使用复合类名

  • 我在使用jsoup(Java)解析html文档时遇到了一个问题。我正在分析的HTML具有以下格式: 我想在两个“hr”标记之间隔离HTML文本。我正在尝试以下代码: 系统出来println(对象); 但是ArrayList没有包含我想要的内容,我不知道如何解决它。(我是否可以将“hr”标记转换为“hr”文本“/hr”标记)?

  • 我想解析出这个Nasa页面上的描述,页面底部的文字 我该怎么做?

  • 本文向大家介绍使用PHP的HTML DOMDocument解析HTML,包括了使用PHP的HTML DOMDocument解析HTML的使用技巧和注意事项,需要的朋友参考一下 可以通过以下代码获取<div>标记内的<div>标记内的文本,其中<div>内的class =“ main”内- 示例 输出结果 这将产生以下输出-