当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 19 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 19:32 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
如图:


附件:
123123.png
123123.png [ 73.57 KiB | 被浏览 1203 次 ]

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 19:47 
头像

注册: 2008-09-18 13:11
帖子: 2633
送出感谢: 1
接收感谢: 418
如果网页写的规范,直接上正则匹配。否则先解析再从DOM提取


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 19:50 
头像

注册: 2009-04-11 23:46
帖子: 4122
系统: Arch Linux
送出感谢: 11
接收感谢: 124
python + lxml + xpath.


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 20:32 

注册: 2007-01-14 16:23
帖子: 4211
送出感谢: 0 次
接收感谢: 106
beautiful soap?


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 21:32 
头像

注册: 2009-04-11 23:46
帖子: 4122
系统: Arch Linux
送出感谢: 11
接收感谢: 124
onlylove 写道:
beautiful soap?


噗,美丽的肥皂~


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 21:46 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
暂时手工复制。搞不定。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 22:36 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
代码:
                         <span class="stu-l">已学完(00:08:32)</span>
                     
                       <a href="http://yun.chinahrt.com/studentCoursePage/chapterDetail/6bac03f0-e10f-4f9b-a250-ac329f031077">2.1“互联网+”的前世今生(00:08:32)</a>
                    </li>
                   
                    <li>
                     
                         
                         
                         <span class="stu-l">已学完(00:08:33)</span>
                     
                       <a href="http://yun.chinahrt.com/studentCoursePage/chapterDetail/422b98c1-aa23-41f6-904d-c64d54af0a41">3.1“互联网+”概述(00:08:33)</a>
                    </li>
                   
                    <li>
                     
                         <span class="stu-l">未学习(00:00:00)</span>
                         
                         
                     
                       <a href="http://yun.chinahrt.com/studentCoursePage/chapterDetail/365ef433-b12f-4635-b6d5-127c5753ca38">3.2“互联网+”的动力(00:08:00)</a>
                    </li>
                   
                    <li>
                     
                         <span class="stu-l">未学习(00:00:00)</span>
                         
                         
                     
                       <a href="http://yun.chinahrt.com/studentCoursePage/chapterDetail/e0c67032-ab6a-43aa-841d-0577886c395c">4.1互联网思维和互联网渠道(00:09:23)</a>
                    </li>
                   
                    <li>
                     
                         <span class="stu-l">未学习(00:00:00)</span>
                         
                         
                     
                       <a href="http://yun.chinahrt.com/studentCoursePage/chapterDetail/c01d8cec-ec57-4692-bbcd-18e1e446a691">4.2互联网平台及物联网(00:07:55)</a>
                    </li>
                   
                    <li>
                     


如何提取 未学习 的链接地址?


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-22 23:28 
头像

注册: 2011-03-20 13:12
帖子: 4402
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 967
以前没用过 beautifulsoup,现学的,没测试过

假设网页地址为 http://aaa.bbb.ccc
最后链接存在文件 output 中
代码:
from bs4 import BeautifulSoup
import urllib

html_doc = urllib.urlopen("http://aaa.bbb.ccc").read()
soup = BeautifulSoup(html_doc, 'lxml')

lis = soup.find_all('li')

hrefs = {}
for each_li in lis:
    if '未学习' in str(each_li):
        as = each_li.find_all('a')
        for each_a in as:
            if each_a.has_attr('href'):
                title = each_a.get_text()
                link = each_a.attrs['href']
                hrefs[title] = link

with open('output', 'w') as f:
    for each_title, each_link in hrefs.items():
        f.write('%s - %s\n' % (each_title, each_link))



_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-23 1:28 
头像

注册: 2007-10-23 12:54
帖子: 1750
送出感谢: 3
接收感谢: 28
考虑到有 未学习,已学完 这种字样,显然是需要用户登录的,爬虫类的代码如果加上模拟登录,不知道有多麻烦。楼主这个需求更合适在浏览器内部解决,用非常简单的 UserJS 就能得到需要的东西
代码:
Array.prototype.slice.call(document.querySelectorAll('.stu-l')).forEach(function(e){
   if(e.textContent.match('未学习'))
      console.log(e.nextElementSibling.href);
});



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
10 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-23 7:13 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
楼上两位,半夜帮忙,辛苦了。很久没碰oython,不知是哪个版本的?其实我就希望半自动就ok了。意思是我人工保存网页,得到html文件,再用sed或awk,把地址提取出来


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-23 7:29 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
AutoXBC 写道:
考虑到有 未学习,已学完 这种字样,显然是需要用户登录的,爬虫类的代码如果加上模拟登录,不知道有多麻烦。楼主这个需求更合适在浏览器内部解决,用非常简单的 UserJS 就能得到需要的东西
代码:
Array.prototype.slice.call(document.querySelectorAll('.stu-l')).forEach(function(e){
   if(e.textContent.match('未学习'))
      console.log(e.nextElementSibling.href);
});



是海猴子插件吗?怎么运行上面的代码?


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-23 8:24 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
哪位sed或awk比较熟悉的,帮忙提取 未学习 下方的地址。变成
xdg-open 地址
sleep 600
xdg-open 地址
sleep 600


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-23 21:53 
头像

注册: 2007-10-23 12:54
帖子: 1750
送出感谢: 3
接收感谢: 28
谢宝良 写道:
是海猴子插件吗?怎么运行上面的代码?

不用其他扩展,存成小书签形式,点击执行就行了。
https://zh.wikipedia.org/wiki/%E5%B0%8F ... 6%E7%AD%BE
代码:
javascript:alert(Array.prototype.slice.call(document.querySelectorAll('.stu-l')).reduce(function(pre,cur){return pre+(cur.textContent.match('未学习')?'xdg-open '+cur.nextElementSibling.href+'\nsleep 600\n':'')},''))

与其手动保存 html,再用 Shell 处理字符串,不如直接生成目标代码,然后复制就可以了。没有什么工具比浏览器更适合处理 DOM。
附件:
2017-05-23_214645.png
2017-05-23_214645.png [ 64.8 KiB | 被浏览 841 次 ]



页首
 用户资料  
 
14 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-25 17:20 

注册: 2010-05-01 21:23
帖子: 1949
送出感谢: 4
接收感谢: 21
AutoXBC 写道:
谢宝良 写道:
是海猴子插件吗?怎么运行上面的代码?

不用其他扩展,存成小书签形式,点击执行就行了。
https://zh.wikipedia.org/wiki/%E5%B0%8F ... 6%E7%AD%BE
代码:
javascript:alert(Array.prototype.slice.call(document.querySelectorAll('.stu-l')).reduce(function(pre,cur){return pre+(cur.textContent.match('未学习')?'xdg-open '+cur.nextElementSibling.href+'\nsleep 600\n':'')},''))

与其手动保存 html,再用 Shell 处理字符串,不如直接生成目标代码,然后复制就可以了。没有什么工具比浏览器更适合处理 DOM。
附件:
2017-05-23_214645.png


多谢这位朋友,让我又学到了新的知识。如果能把提取的内容写进文件,那就很好了。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 有啥好方法提取某网页的链接地址?
帖子发表于 : 2017-05-25 17:46 
头像

注册: 2007-10-23 12:54
帖子: 1750
送出感谢: 3
接收感谢: 28
谢宝良 写道:
如果能把提取的内容写进文件,那就很好了。

高版本的 ECMAScript 是支持写本地文件的,有些浏览器的私有api也可以做到,这涉及兼容性问题,需要用户按自己的实际环境编写代码并调试。对于不支持直接写文件的浏览器,也可以用本地开 web server 配合 cgi 脚本实现,浏览器将文本编码并通过 get url 传递过去,web server 接收保存到本地,也是要自己写点代码的。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 19 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译