python爬虫

来源:互联网 发布:阿里云国际站 编辑:程序博客网 时间:2024/06/06 18:29
刚学python,边看教程亦步亦趋写了个最简单的爬虫,下面介绍一下网络爬虫重要的组件

下图是URL管理器:主要作用是保存新的URL,防止重复抓取和循环抓取
有两个缓存空间:待爬取URL集合:set(), 已爬取URL集合:set()

网页下载器(urllib2)
作用:将互联网上URL对应的网页下载器到本地
三种常用写法
(1)import urllib2
         response = urllib2.urlopen("http://www.baidu.com")
         print response.getcode() #查看是否成功下载网页,成功为200
         cont = response.read() #读出下载的网页的html代码
(2) import urllib2
          request = urllib2.Request(url)
          request.add_data('a', '1')
          request.add_header('User_Agent',  ‘Mozilla/5.0’)#伪装成浏览器访问,因为有些网站拒绝脚本访问
          response = urllib2.urlopen(request)
 (3)有些情况需要添加特殊情景的处理器
HTTPCookieProcessor(需要用户登陆)
ProxyHandler(需要代理)
HTTPSHandler(协议使用HTTPS加密访问)
HTTPRedirectHandler(URL自动跳转)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
urllib2.urlopen(url)
urllib2.urlopen(request)

import urllib2, cookielib
cj = cookielib.cookiejar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
response = urllib2.urlopen("http://www.baidu.com")

网页解析器
作用:从网页中提取有价值数据的工具
html网页字符串-》网页解析器-》价值数据和新的URL列表
常用网页解析
正则表达式                html.parser                        beautifulSoup                   lxml
模糊匹配                                                   这三个属于结构化解析
beautifulSoup兼容html.parser和lxml,它所做的就是将网页字符串转化为一颗数,按节点搜索你想要的数据

代码 from bs4 import BeautifulSoup
        import re
        soup = BeautifulSoup(html_doc, 'html.parser', from_encording = 'utrf-8')
        node = soup.find_all('a')
        node = soup.find_all('a', href = '/view/123.htm')
        node = soup.find_all('a', href = re.compile(r'/view/\d+/.htm'))#正则表达式匹配
        
       node.name :得到标签
       node['href']:得到属性
       node.get_text():得到文本

html输出器
作用:将得到的信息写入一个html文件里,具体怎么写就不赘述了。下面有完整代码地址
http://download.csdn.net/download/qq_26654257/10008995点击打开链接
原创粉丝点击