关闭

爬虫主要流程

标签: python爬虫
547人阅读 评论(0) 收藏 举报
分类:

爬虫主要流程


调度器

  • 主调度程序主要是管理上图中其余几个模块的,然后循环的执行这几个模块进行爬取信息,直到条件达到(爬取够一定数量)跳出循环。

URL管理器

  • 每爬取一个网页的有用信息后,并把有用的URL爬取下来放入URL管理器中,等下次循环的爬取可以直接从这个管理器中获取URL

网页下载器

  • 这里用到下载网页的库是urllib2,通过库把url指定的网页的html源代码下载下来,存入urllib2对象
  • 以下是几种简单的下载网页方式 

  • 代码演示
#!/usr/bin/env python
# -*_coding:utf8-*-

import urllib2 #下载网页的库
import cookielib

url = 'http://www.baidu.com'

print '第一种方法'
response1 = urllib2.urlopen(url)
print response1.getcode() #请求状态码
print len(response1.read()) #read爬取网页信息


print '第二种方法,添加头部信息,模拟浏览器访问'
request = urllib2.Request(url) #生成一个请求对象
request.add_header('user-agent','Mozilla/5.0') #在请求对象里添加请求头部信息
response2 = urllib2.urlopen(request)
print response2.getcode() #请求状态码
print len(response2.read()) #read爬取网页信息


print '第三种方法,有的浏览器需要登录,需添加cookie处理功能'
cj = cookielib.CookieJar() #创建一个cookie容器对象
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #创建一个具有HTTPcookieProcessor方法的opener对象
urllib2.install_opener(opener) #给urllib2安装这个opener,urllib2就有了cookie处理的能力
response3 = urllib2.urlopen(url)
print response3.getcode() #请求状态码
print response3.read() #read爬取网页信息

解析器

  • 解析器的功能是用来解析下载下来的网页,这里解析网页主要用到的第三方库就是BeautifulSoup,通过这个库然后根据html的标签爬取我们想要的信息。。 



  • 代码演示

#!/usr/bin/env python
#-*-coding=utf8-*-

from bs4 import BeautifulSoup
import re

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<div class="para" label-module="para">在计算机科学中<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
</div><a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""
#创建解析html的soup对象
soup = BeautifulSoup( html_doc,                #HTML文档
					  'html.parser',	   #HTML解释器
					  from_encoding='utf-8' #HTML文档使用的编码
					)



# 搜索节点标签方法 find_all/find(name,attrs,string)
#node = soup.find_all('a',class_='abc',string='python') #class加下划线是为了区别关键字
#node.name   #获取你标签名字
#name['href']#以字典的形式访问href属性的值
#node.get_text()#获取节点中的链接文字

print '获取所有链接'
node = soup.find_all('a')
print 'node',node
for link in node:
	print link.name, link['href'], link.get_text()


print '获取指定url链接'
node_link = soup.find('a', class_='sister')
print node_link.name, node_link['href'], node_link.get_text()


print '使用正则表达进行模糊匹配'
node = soup.find('div', class_='para').find_all('a', href=re.compile('exa'))
for node_link in node:
	print node_link.name, node_link['href'], node_link.get_text()


#1、compile()

#编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)

#格式:

#re.compile(pattern,flags=0)

#pattern: 编译时用的表达式字符串。

#flags 编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。常用的

应用

  • 最后就可以把解释器解释出来的数据写入相应的文件中,提供一定的作用。

6
8
查看评论

网络爬虫基本流程及开源爬虫

网络爬虫基本原理(一)     网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程   &...
  • mack415858775
  • mack415858775
  • 2016-04-01 11:59
  • 6886

爬虫总结(四)-- 分布式爬虫

分布式爬虫的演习。 分布式爬虫问题其实也就是多台机器多个 spider 对 多个 url 的同时处理问题,怎样 schedule 这些 url,怎样汇总 spider 抓取的数据。最简单粗暴的方法就是将 url 进行分片,交给不同机器,最后对不同机器抓取的数据进行汇总。然而这样每个 spide...
  • omnispace
  • omnispace
  • 2017-02-18 05:29
  • 2777

Libevent基本流程

以libevent的sample中的time_test.c为例,在windows下单步调试,分析其基本流程。 //time_test.c源码如下: #include #include #include #include #include #include #include #inclu...
  • u012658346
  • u012658346
  • 2015-03-30 09:37
  • 411

深入分析nutch的抓取流程

分析Nutch的工作流程 Nutch爬虫工作策略 Nutch爬虫的工作策略一般则可以分为累积式抓取(cumulative crawling)和增量式抓取(incrementalcrawling)两种。 累积式抓取是指从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的...
  • yeahi
  • yeahi
  • 2015-11-09 14:08
  • 4362

C4.5算法的流程和程序分析

C4.5程序分析 1.     使用方法 1)C45 –f golf (golf.data为数据文件名 ),生成golf.tree文件,即只创建树。 2)C45 –u golf(golf.data为数据文件名),除生成golf.tree文件,还...
  • ltpmss
  • ltpmss
  • 2014-10-29 20:41
  • 94

一看就明白的爬虫入门讲解

关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是: 我们的目的是什么内容从何而来了解网络请求一些常见的限制方式尝试解决问题的思路效率问题的取舍 本文先聊聊前三个部分。 一、我们的目的是什么 一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般...
  • AlbenXie
  • AlbenXie
  • 2017-05-23 11:27
  • 477

爬虫最基本的工作流程:内涵社区网站为例

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 只要是浏览器能做的事情,原则上,爬虫都能够做 先来看一下最简单的网络爬虫百度Logo图片提取: import requests r = requests.get(...
  • xun527
  • xun527
  • 2017-11-05 11:02
  • 309

自定义外设

自定义外设作为NiosII软核处理器超强灵活性的体现,其开发遵循一定的规律。一个用户自定义外设必须进行硬件设计,也就是说,必须用硬件描述语言来描述出硬件的逻辑组成。一般来说,一个自定义外设主要由下列部分组成:       ①  描...
  • henhen2002
  • henhen2002
  • 2009-12-20 00:36
  • 1236

手势识别的整体流程分析

本文转载自http://www.cnblogs.com/tornadomeet/archive/2013/02/26/2933358.html 关于ChaLearn数据库在前面文章ChaLearn Gesture Challenge_1:CGD数据库简单介绍中已经介绍过,当然了,关于该数据...
  • siliang13
  • siliang13
  • 2014-05-30 14:33
  • 1756

爬虫基本知识

网络爬虫  编辑 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 中文名 网络爬虫 外文名 Co...
  • han____shuai
  • han____shuai
  • 2016-02-05 22:36
  • 1868
    个人资料
    • 访问:50502次
    • 积分:1339
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:12篇
    • 译文:0篇
    • 评论:29条
    个人专属
    文章分类
    最新评论