python:爬虫

本文介绍了爬虫的基本组件,包括URL管理器、网页下载器及网页解释器,并详细讲解了使用urllib2进行网页下载的方法及BeautifulSoup进行网页解析的步骤。

模块:

(1)url管理器:对url进行管理

(2)网页下载器(urllib2):将需要爬取的url指定的网页以字符串的形式下载下来

(3)网页解释器(BeautifulSoup):解析

利用urllib2下载网页的方法:

方法1:

import urllib2,cookielib
url = 'http://www.baidu.com'  #定义url

res1 = urllib2.urlopen(url)   #请求url
print res1.getcode()     #获取动态码
print len(res1.read())    #获取内容

方法2:

#伪装成浏览器
import urllib2,cookielib
url = 'http://www.baidu.com'

request = urllib2.Request(url)
request.add_header('User-Agent','Mozilla/5.0')   #添加http的header,伪装成浏览器
res2 = urllib2.urlopen(request)   #发送请求获取结果
print res2.getcode()
print len(res2.read())

方法3:

#添加特殊情景的处理器。例如需要登录cookie、代理proxy、https、网页自动跳转或者互相志向等网页

#处理cookie实例
import urllib2 import cookielib url = 'http://www.baidu.com' cj = cookielib.CookieJar() #创建cookie容器 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #创建一个opener urllib2.install_opener(opener) #给urllib2安装opener res3 = urllib2.urlopen(url) #发送请求获取结果 print res3.getcode() print len(res3.read()) print cj

网页解释器种类:

(1)正则表达式

(2)html.parser

(3)BeautifulSoup:第三方包

(4)lxml

BeautifulSoup语法:

(1)创建bs对象
(2)搜索节点find_all,find(搜索第一个节点)
  搜索内容包括:节点名字,节点属性,节点内容
  例如:<a href='123.html' class='article_link'>hello,python!</a>
    节点名字:a
    节点属性:href='123.html' 或 class='article_link'
      节点内容:hello,python!
(3)访问节点

from bs4 import BeautifulSoup

html_doc = '''
<!DOCTYPE html>

<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <title>页面1</title>
    </head>

    <body>
        <a href='http://www.baidu.com'>百度</a>
        <a href='http://www.youku.com'>优酷</a>
        <a href='http://www.hao123.com'>hao123</a>
    </body>
</html>
'''

soup = BeautifulSoup(html_doc,'html.parser',from_encoding='utf-8')

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


print '只获取百度的链接:'
link_node = soup.find('a',href='http://www.baidu.com')
print link_node.name,link_node['href'],link_node.get_text()

输出结果:

获取所有链接:
a http://www.baidu.com 百度
a http://www.youku.com 优酷
a http://www.hao123.com hao123
获取百度的链接:
a http://www.baidu.com 百度
正则表达式匹配
a http://www.baidu.com 百度

 

转载于:https://www.cnblogs.com/ping-y/p/6030647.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值