鉴于新闻文章的网页(来自任何主要新闻来源,如时代或彭博社),我想确定在该网页上的主要文章内容,并抛出其他杂项元素,如广告,菜单,边栏,用户评论。 在大多数主要新闻网站上,通用的方法是什么? 数据挖掘有哪些好的工具或库? (最好是基于python)
大量的HTMLparsing器select(并坚持)是令人难以置信的: http://java-source.net/open-source/html-parsers 我如何select最适合以下要求的产品: 成熟(比其他的更less的错误) 生活和呼吸(即维持) 快速和资源高效(打算在Android上运行) 根据你的经验,你会推荐哪个HTMLparsing器(满足上述要求),为什么?
我想使用HTML敏捷性包parsing来自复杂网页的表,但我在某种程度上迷失在对象模型中。 我看了链接的例子,但没有find任何表格数据。 我可以使用XPath获取表格吗? 加载了关于如何获取表格的数据后,我基本上已经丢失了。 我之前在Perl中做过这件事,这有点笨拙,但工作。 ( HTML::TableParser )。 如果能够解释正确的对象顺序,我也很高兴。
Haskell网站的当前状态是什么? 我试图让自己更多地做我在哈斯克尔快速的一次性的任务,以帮助提高我的语言舒适度。 在Python中,我倾向于使用优秀的PyQuery库。 Haskell有类似的简单和容易吗? 我已经研究了Tag Soup,虽然parsing器本身看起来不错,但是实际上遍历页面并不像其他语言那样好。 那里有更好的select吗?
从我可以做出来的,Python中的两个主要的HTMLparsing库是lxml和BeautifulSoup。 我select了BeautifulSoup作为我正在开发的一个项目,但是除了find语法更容易学习和理解外,我没有特别的理由select它。 但是我看到很多人都赞成lxml,我听说lxml更快。 所以我想知道一个在另一个的优点是什么? 我什么时候想要使用lxml,何时使用BeautifulSoup会更好? 还有其他的图书馆值得考虑吗?
标签可以有多个属性。 属性在代码中出现的顺序无关紧要。 例如: <a href="#" title="#"> <a title="#" href="#"> 我怎样才能“正常化”在JavaScript中的HTML,所以属性的顺序总是相同的? 我不在乎select哪个订单,只要它总是一样的。 更新 :我最初的目标是使它更容易区分(在JavaScript中)2个HTML页面,略有不同。 由于用户可以使用不同的软件来编辑代码,因此属性的顺序可能会改变。 这使差异太冗长。 回答 :那么,首先要感谢所有的答案。 是的,这是可能的。 这是我设法做到的。 这是一个概念的certificate,它当然可以优化: function sort_attributes(a, b) { if( a.name == b.name) { return 0; } return (a.name < b.name) ? -1 : 1; } $("#original").find('*').each(function() { if (this.attributes.length > 1) { var attributes = this.attributes; var list = […]
当使用正则expression式search复合类名时,BeautifulSoup返回空列表。 例: import re from bs4 import BeautifulSoup bs = """ <a class="name-single name692" href="www.example.com"">Example Text</a> """ bsObj = BeautifulSoup(bs) # this returns the class found_elements = bsObj.find_all("a", class_= re.compile("^(name-single.*)$")) # this returns an empty list found_elements = bsObj.find_all("a", class_= re.compile("^(name-single name\d*)$")) 我需要选课非常精确。 有任何想法吗?
显然,如果在body元素中有一个没有匹配开始标记的</p>结束标记,大多数(如果不是所有的话)浏览器都会在它的位置生成一个空的段落: <!DOCTYPE html> <title></title> <body> </p> </body> 即使在结束标记周围存在任何文本,也不会将其作为此p元素的一部分 – 它将始终为空,并且文本节点将始终独立存在: <!DOCTYPE html> <title></title> <body> some text</p>more text </body> 如果body的上述内容被包裹在<p>和</p>标记中,我会留给你猜测会发生什么: <!DOCTYPE html> <title></title> <body> <p>some text</p>more text</p> </body> 有趣的是,如果</p>标签前面没有<body>或</body>标签,除了IE9和更老版本的浏览器都不会生成空白段落(IE≤9则始终创build一个) IE10和更高版本的行为与所有其他浏览器相同): <!DOCTYPE html> <title></title> </p> <!DOCTYPE html> <title></title> </p><body> <!DOCTYPE html> <title></title> </p></body> 我找不到任何引用规定,没有相应的开始标签的结束标签应该生成一个空的元素,但不应该让人感到意外,因为它甚至不是有效的HTML。 事实上,我只find浏览器用p元素(以及某种程度上也是br元素)来做到这一点,但是为什么没有任何解释。 在使用传统的HTMLparsing器和HTML5parsing器的浏览器中,它是相当一致的,不过,在怪癖模式和标准模式下都适用。 所以,这可能是公平的,这是为了向后兼容早期规范或传统行为。 事实上,我的确发现了这个评论的答案, 这个问题基本上证实了这个问题: 为什么<p>标签有效的原因是原来的<p>被定义为“新的段落”标记,而不是p是一个容器元素。 相当于成为“新线”的标志。 你可以从1992年的这个文档中看到: http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Tags.html和1993年的这个: http://www.w3。 org / MarkUp […]
我想用Pythonparsing一个html文件,我使用的模块是美丽的。 我使用之后,发生了一些奇怪的事情。据说函数“find_all”是 和“findAll”一样,但我已经试过了。 但它是不同的。 谁能告诉我不同? import urllib, urllib2, cookielib from BeautifulSoup import * site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407" rqstr = urllib2.Request(site) rq = urllib2.urlopen(rqstr) fchData = rq.read() soup = BeautifulSoup(fchData) t = soup.findAll('tr') print t
我有一个关于HTMLparsing的问题。 我有一个网站的一些产品,我想抓到页面内的文字到我目前的电子表格。 这个电子表格相当大,但在第三列中包含ItemNbr,我期望第14列中的文本和一行对应于一个产品(项目)。 我的想法是在标签后面的Innertext里面获取网页上的“材质”。 身份证号码从一个页面更改为页面(有时)。 这里是网站的结构: <div style="position:relative;"> <div></div> <table id="list-table" width="100%" tabindex="1" cellspacing="0" cellpadding="0" border="0" role="grid" aria-multiselectable="false" aria-labelledby="gbox_list-table" class="ui-jqgrid-btable" style="width: 930px;"> <tbody> <tr class="jqgfirstrow" role="row" style="height:auto"> <td …</td> <td …</td> </tr> <tr role="row" id="1" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr"> <td …</td> <td …</td> </tr> <tr role="row" id="2" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr"> <td …</td> <td …</td> […]