python 爬取百度知道,Python 爬虫爬取百度百科网站

利用python写一个爬虫,爬取百度百科的某一个词条下面的全部链接和每一个链接内部的词条主题和摘要。利用request库爬取页面,然后利用BeautifulSoup对爬取到的页面提取url和关键内容。使用一个类来管理url,使爬取到的url不会被重新爬取。遍历url的时候,将每个url指向的html页面爬取下来,提取出感兴趣的文本,保存到文件。最后生成一个某一个词条下面的包含的所有词条和摘要的文件。

用到的Python的库:

1. urllib.request

2.BeautifulSoup

关于urllib.request

urllib.request 是python 3 下面的一个库,不支持python2,(python2的是requests库),本来是想用requests的,但是python的中文编码问题一直没有解决,但好想问题已经找到了,就是抓取到的网页的内容编码是ios-8859-1,但是网页的response头部的编码是utf-8,导致编码不统一,造成乱码。解决方案,在另外的一遍文章讨论。总之就是,用了这个urllib.request库,当然源代码里面也有使用requests库,造成乱码的源码。这是关于乱码的分析的文章http://www.jianshu.com/p/f819ab06a53a。

关于BeautifulSoup

BeautifulSoup是一个神器啊,将抓取到的html,转换为一颗dom树,可以通过很简单的语法,来访问特定的标签和标签下面的属性。而且还支持正则表达式。

源码的思路分析:

源码包括5个文件,main.py , HtmlParse.py,UrlManage.py,html_outputer.py,html_download2.py

main.py 是程序的入口

HtmlParse.py,UrlManage.py,html_outputer.py,html_download2.py 每一个文件对应一个类,他们分别的功能是

UrlManage.py 负责url管理,这个类下面的数据成员是 old_urlset 和new_urlset,分别表示已经爬取的页面,和没有爬取的页面。

html_download2.py 负责将网页下载下来(这里很容易出现下载下来的网页是乱码的问题,以后慢慢讨论这个问题)

HtmlParse.py 负责将爬取下来的网页做分析。利用BeautifulSoup,提取网页的词条主题和里面没包含的url

html_outputer.py 负责将分析之后得到的词条主题写到文件里面。

程序的目录:

2251149b9a57

输出文件是output.txt, 程序运行结果:

2251149b9a57

shell的运行结果:

2251149b9a57

通过main.py 页面里面count 变量设置爬取的页面数,比如100条

2251149b9a57

源代码链接:

https://github.com/zhaozhengcoder/Spider

参考教程:

廖雪峰的python教程http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

静觅的python教程

http://cuiqingcai.com/category/technique/python

BeautifulSoup官方的文档

requests库的官方文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值