运用BeautifulSoup抓取网页的链接

运用BeautifulSoup抓取网页的链接
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

之前一直都是做前端,不知道搜索引擎后台核心是怎样实现。今天看到bd内部的spider资料,决定运用先前学过的python模拟一把,把指定网页的a标签中的href提取出来。

运用到扩展模块BeautifulSoup(http://www.crummy.com/software/BeautifulSoup/)。

BeautifulSoup的功能很强大,能方便对HTML和XML的文本处理。可以轻易捕捉到tag和className。

程序实现的原理很简单,先把网页提取出来,再提取a标签,再过滤出href,最后完善一下文本。

代码如下:

 

View Code
复制代码
 1 from BeautifulSoup import BeautifulSoup 2 import urllib2 3 import re 4  5 def grabHref(url,localfile): 6     html = urllib2.urlopen(url).read() 7     html = unicode(html,'gb2312','ignore').encode('utf-8','ignore') 8     content = BeautifulSoup(html).findAll('a') 9     myfile = open(localfile,'w')10     pat = re.compile(r'href="([^"]*)"')11     pat2 = re.compile(r'http')12     for item in content:13         h = pat.search(str(item))14         href = h.group(1)15         if pat2.search(href):16             ans = href17         else:18             ans = url+href19         myfile.write(ans)20         myfile.write('\r\n')21         print ans22     myfile.close()23     24 def main():25     url = "http://www.hao123.com"26     localfile = 'aHref.txt'27     grabHref(url,localfile)28 if __name__=="__main__":29     main()
复制代码

其中比较dt的是match和search的正则表达式判定,之前这方面做得比较少,上网查了一下原来两者的区别是 match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。

然后就是扩展模块的调用,把下载得到的文件夹setup之后得到BeautifulSoup.py及其编译文件。把两者放到安装目录的lib下就好了。不能只放在BeautifulSoup文件夹下。导入源文件时是用from BeautifulSoup import BeautifulSoup就直接调用BeautifulSoup.findAll()方法,否则导入时是import BeautifulSoup的话,调用方法就需要写成BeautifulSoup.BeautifulSoup().findAll().

程序运行后会得到一个aHref.txt的文件,并且在console中打印hao123的所有链接。搜索引擎的spider就是再从这堆链接中继续递归去爬行。当然真正实现起来肯定会想得更全面,做得更精的, 而且涉及到的算法很复杂。这里只是提取网页链接而已。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift +

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值