之前一直都是做前端,不知道搜索引擎后台核心是怎样实现。今天看到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就是再从这堆链接中继续递归去爬行。当然真正实现起来肯定会想得更全面,做得更精的, 而且涉及到的算法很复杂。这里只是提取网页链接而已。

转载于:https://www.cnblogs.com/winterIce/archive/2011/10/06/2200002.html

运用BeautifulSoup抓取网页的链接相关推荐

  1. .NET2.0抓取网页全部链接【月儿原创】

    .NET2.0抓取网页全部链接 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.18 该方法经过对各大门户网站测试结果是抓取 ...

  2. 【实例】python 使用beautifulSoup 抓取网页正文 以淘宝商品价格为例

    参考文章: 利用BeautifulSoup抓取新浪网页新闻的内容 使用Requests库和BeautifulSoup库来爬取网页上需要的文字与图片 -------------------------- ...

  3. python request url 转义_Python多线程抓取Google搜索链接网页

    1)urllib2+BeautifulSoup抓取Goolge搜索链接 近期,参与的项目需要对Google搜索结果进行处理,之前学习了Python处理网页相关的工具.实际应用中,使用了urllib2和 ...

  4. [Python]爬虫02:用Beautifulsoup抓取的网页中有br标签,返回字符串为None,先用replace去除网页中br再抓内容。

    问题:用Beautifulsoup抓取网页,网页中含有br标签,抓取相关的内容结果是None. 试了用字符串的replace函数替换br,还是返回None.试了用re正则替换br,提示返回类型错误. ...

  5. python 抓取网页链接_从Python中的网页抓取链接

    python 抓取网页链接 Prerequisite: 先决条件: Urllib3: It is a powerful, sanity-friendly HTTP client for Python ...

  6. python批量下载网页文件夹_Python抓取网页批量下载文件方法初探(正则表达式+BeautifulSoup) (转)...

    最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法 ...

  7. python爬虫搜特定内容的论文_python基于BeautifulSoup实现抓取网页指定内容的方法...

    python基于BeautifulSoup实现抓取网页指定内容的方法 更新时间:2015年07月09日 10:12:50 作者:光索与诺 这篇文章主要介绍了python基于BeautifulSoup实 ...

  8. Python小应用1 - 抓取网页中的链接地址

    看到一篇博文上讲到用Python写自动访问博客的功能,里面的核心功能就是抓取网页中的链接,类似一个网页爬虫工具.正好我刚学习Python,就决定自己练习一下.写了一下,原本觉得很简单的东西,搞了半天才 ...

  9. beautifulsoup爬取网页中的表格_用 Python 爬取网页

    来自公众号:优达学城Udacity 作者:Kerry Parker 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑 ...

最新文章

  1. crc可以检出奇数个错误_计算机网络最新章节_陈虹著_掌阅小说网
  2. 侧边栏跳转_微信和三星首次系统级合作:在负一屏和侧边栏直接打开小程序
  3. 4.3.2模拟匹配的一种改价算法(KMP及KMP优化算法)
  4. 社交网络营销之制订“参与社交网络的规则”
  5. SharePoint 2013 文档库中PPT转换PDF
  6. Java伪装csrss_结束伪装成系统进程名的进程的批处理
  7. 小米8 QFIL 刷机
  8. C语言实现飞机订票系统
  9. HDU 4173(计算几何
  10. python自动化,微信发送信息
  11. Flutter笔记(9)flutter中baseline基准线布局
  12. Android自定义锁屏的实现
  13. 国产高可用软件,双机热备与冷备的区别
  14. 英国招生官建议个人陈述该做些什么
  15. C# List集合快速拼接字符串
  16. 模糊数学 4、模糊模式识别
  17. apache虚拟服务器搭建,httpd搭建虚拟主机与Apache网站基础服务
  18. c语言画笔的使用方法,新手必看:Photoshop笔刷画笔工具基本使用教程
  19. UGA由哪几部分组成和PGA上内存空间的分配与回收的方式
  20. 饭局给领导送礼被打脸,高手用这3个技巧,感情和人脉“双到位”

热门文章

  1. Github Pages+Hexo+阿里云域名绑定
  2. 《精通自动化测试框架设计》目录—导读
  3. TYVJ P1091 等差数列 Label:dp
  4. postgresql 可调试
  5. java -jar Incompatible argument to function
  6. Android实例RSS客户端开发(1)
  7. Windows 2003系统也玩图片收藏屏保
  8. Magento 模版路径
  9. IDEA 及 Gradle 使用总结
  10. centos的nginx支持ssl