爬虫入门:Python

indicator:

网页也是文件,只是路径是 url 形式,内容是html——打开则需要使用urlopen,而 urlopen 则是返回一个类文件对象

想要找到文件指定内容——正则表达式匹配,或者其他技术


URL 管理器——

功能:区别URL爬取 / 未爬取,避免重复爬取统一个URL

使用内存实现——两组set():已爬取URL/未爬取URL,使用set() 数据结构可以直接取出重复元素

使用关系数据库——建立一个url 表,两个关键字:已爬取/未爬取

缓存数据库——高性能,redis 也支持set


网页下载器——

urllib2

1.直接获取所有——只需要参数 url

import urllib2
url = 'xxxx.com'
response = urllib2.urlopen(url)  # 请求
print response.getcode() # 状态码——200:success
print response.read() # 读取网页内容
2.交互——需要三个参数

header:向服务器提交 http 头信息

date:向服务器提交需要用户输入的数据

url

将三个参数构建一个request 对象(使用 urllib2.Request 构建),然后使用 urllib2.urlopen(request),以 request 为参数发送网页请求

a. 后面补充data和header

# -*- coding: utf-8 -*-
import urllib2
import urllib

url = 'http://xxxxsoft.org/jira/login.jsp'
request = urllib2.Request(url) # build Request object

# add data
data = urllib.urlencode({
		'os_username' : '23333',
		'os_password' : '23333',
                 .....
		'login' : 'Log In'
	})
request.add_data(data) #request.add_data('psw','xxxx') # key is 'psw', value is 'xxx'
# add header
header = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
request.add_header('User-Agent',header) #request.add_header(header)  take 3 parameters (2 given)

response = urllib2.urlopen(request)
print response.read()
b.一开始就构建好带有header 和 data的request

import urllib2
import urllib
url = 'http://hdc-tomcat-jira150.ubisoft.org/jira/login.jsp'
data = urllib.urlencode({
		#'os_username' : '23333',
		'os_password' : '23333',
		'os_destination' : '',
		'user_role' : '',
		'atl_token' : '',
		'login' : 'Log In'
	})
header = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
header = {'User-Agent' : header}

request = urllib2.Request(url) # build Request object
request = urllib2.Request(url = url, headers = header, data = data)
response = urllib2.urlopen(request)
print response.read()


3. 添加特殊的处理器

常见的处理器有:HTTPCookieProcessor(处理cookie信息),ProxyHandler(对于有些需要代理处理的网页),HTTPSHandler(对于https加密的网页),HTTPRedirectHandler(url相互自动跳转的网页),HTTPBasicAuthHandler。

将上述的 Handler 通过 build_opener() 方法创建对象:opener - urllib2.build_opener(xxxhandler) ——> urllib2 安装这些opener:urllib2.install_opener(opener),使得urllib2具有处理相应场景的能力,最后使用 urlopen() 参数可以为 request 或者 url 均可,urlopen调用的就是自定义的opener

import  urllib2,cookielib
cj = cookielib.CookieJar() # build one cookie container
opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(cj) )
urllib2.install_opener(opener) # install one opener
reponse = urllib2.urlopen('http://www.baidu.com/') # use stronger urlopen to open webside

urlopen返回的是一堆 html 格式的代码,当你想要知道是否爬取了正确的网页,可以将 response.read() 的内容拷贝出来,构建一个html 文件打开看可以大致的比较一下。当然也可以查看目标网页源文件与其比较。


网页解析器——

正则表达式

BeautifulSoup 第三方插件——处理HTML

ScrapeNFeed——RSS feed进行分析


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值