Board logo

标题: 求个批量HTML提取指定class内容的方法 [打印本页]

作者: eva3d    时间: 2013-4-28 14:46     标题: 求个批量HTML提取指定class内容的方法

posted by wap, platform: iPhone

免费软件还是脚本,什么都行...
作者: eva3d    时间: 2013-4-28 14:48

posted by wap, platform: iPhone

提取的内容是  <td class="post-body>  </td> 里面的内容
作者: 使徒-    时间: 2013-4-28 15:10

posted by wap, platform: Chrome

用javascript还是其他脚本语言?
作者: bluewings    时间: 2013-4-28 15:15

小说提取正文?
作者: cc0128    时间: 2013-4-28 15:45

posted by wap, platform: GOOGLE (Nexus 4)

写个程序弄很快的吧
作者: 黑暗骑士巫妖王    时间: 2013-4-28 15:53

posted by wap, platform: Nexus 7

python+BeautifulSoup干这个是神器,只要几行代码就搞定了。下面附上以前用抓新浪微博的:

# -*- coding:UTF-8 -*-

import urllib2
from BeautifulSoup import BeautifulSoup
# 微博的地址
weiboUrl= "******"

htmlStr        = urllib2.urlopen(weiboUrl)
soup        = BeautifulSoup(htmlStr)

# 分析微博主头像
weiboFacePic        = soup.find('div',{"class":"weiboShow_developer_pic"}).find("img"
weiboFacePic['class']        = "weiboFacePic"

# 分析每个微博内容单元
weiboUnit        = soup.findAll('div',{"class":"weiboShow_mainFeed_listContent"})
for keyi in weiboUnit:
        weiboUnitText        = keyi.find('p',{"class":"weiboShow_mainFeed_listContent_txt"})
        weiboUnitText['class']        = "weiboUnitText"

        weiboUnitImg        = keyi.find('img')

        weiboUnitSendTime        = keyi.find('span',{"class":"weiboShow_mainFeed_listContent_actionTime"})
        weiboUnitSendTime['class']        = "weiboUnitSendTime"
        for keyj in weiboUnitText:
                print weiboFacePic
                print "<div class='weiboContent'>","<a href='http://e.weibo.com/2179063294/app_738247391' target='_blank' style='color:#6EAFD5'>******</a>:"
                print keyj,"</div>"
                print weiboUnitImg
                print "<div style='text-align:right;' class='weibotime'>",weiboUnitSendTime.contents,"</div>"
                print """<div style="border-bottom:1px dotted #DFDFDF; height:10px; margin-bottom:11px;"></div>"""
作者: 黑暗骑士巫妖王    时间: 2013-4-28 16:09

posted by wap, platform: Nexus 7

# -*- coding:UTF-8 -*-

import urllib2
from BeautifulSoup import BeautifulSoup
# 设定抓取的HTML的地址
htmlUrl= "http://www.cnbeta.com/"                # 既然是测试就抓CNBETA吧

htmlStr        = urllib2.urlopen(htmlUrl)                # 读取网址的HTML内容
soup        = BeautifulSoup(htmlStr)                # 将HTML内容用BSoup解析,保存到soup变量中

# 分析每个微博内容单元
#htmlUnit        = soup.findAll('td',{"class":"post-body"})        #把 class='post-body' 的 td提取出来
htmlUnit        = soup.findAll('dt',{"class":"topic"})        # 这里就改成cnbeta上文章标题的class吧
for keyi in htmlUnit:
        print keyi.contents                # 加上.contents是只显示你指定标签内的内容,不加则显示包括dt class='topic' 的全部内容
作者: eva3d    时间: 2013-4-28 16:17

posted by wap, platform: iPhone
引用:
原帖由 @黑暗骑士巫妖王  于 2013-4-28 15:53 发表
posted by wap, platform: Nexus 7

python+BeautifulSoup干这个是神器,只要几行代码就搞定了。下面附上以前用抓新浪微博的:

# * coding:UTF8 *

import urllib2
from BeautifulSoup import BeautifulSoup
...
能弄成批量导入本地html的么?
作者: 黑暗骑士巫妖王    时间: 2013-4-28 16:20

posted by wap, platform: Nexus 7

批量导入很简单啊,python操作几行就搞定,甚至你自己编个批处理都很简单
作者: 刘泪    时间: 2013-4-28 17:05

正则表达式在向你微笑
作者: lrj2u    时间: 2013-4-28 17:24

python和正则表示式向你微笑
作者: 黑暗骑士巫妖王    时间: 2013-4-28 17:26

posted by wap, platform: Nexus 7

正则表达式早就过时了,你有写正则表达式的时间,各种HTML、XML解析库早就搞定啦,处理这类玩意还是专业的库更可靠
作者: lvcha    时间: 2013-4-28 17:35

引用:
原帖由 黑暗骑士巫妖王 于 2013-4-28 17:26 发表
posted by wap, platform: Nexus 7

正则表达式早就过时了,你有写正则表达式的时间,各种HTML、XML解析库早就搞定啦,处理这类玩意还是专业的库更可靠
+1
java可以用jsoup,挺简单的。
Connection c = Jsoup.connect(“xxxx”);
Document doc = c.get();
Elements ele = doc.select("td[class=post-body]");
for (Element element : ele) {
      String txt= element.text();
}
其它语言肯定也有类似的库。
作者: chronicle1st    时间: 2013-4-28 17:37

posted by wap, platform: Android

复制到word里面。。。
用通配符
作者: xu33    时间: 2013-4-28 19:49

posted by wap, platform: Chrome

我说一个偏门一点的,用AJAX请求你这个要解析的这个HTML文件到浏览器,去掉不必要的标签后插入页面,然后操作JS用DOM提取再发送给后台存储。
作者: sunrainnet    时间: 2013-4-28 19:57

好多高手啊。。来学习一下。。
作者: 咖啡殉    时间: 2013-4-28 20:45

LZ是要采集?
作者: kevan    时间: 2013-4-28 21:34

posted by wap, platform: UC

牛逼啊有php吗




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0