Python--爬虫

实际上爬虫一共就四个主要步骤:
  1. 明确目标 (要知道你准备在哪个范围或者网站去搜索)
  2. 爬 (将所有的网站的内容全部爬下来)
  3. 取 (去掉对我们没用处的数据)
  4. 处理数据(按照我们想要的方式存储和使用)


#爬虫是模拟浏览器向http服务器发送请求接收服务器响应的一种程序
     #模拟浏览器
        #URL 统一资源定位符
        #URI 统一资源标识符
    #URI 大于 URL
    #浏览器请求服务器的步骤
         #1、确定请求的位置,就是我们所说的地址也就是url
            #我们在写爬虫的过程当中,第一个要用到的知识点就URL
                #url example: http://business.sohu.com/20161015/n470353142.shtml
                    #http/https 协议
                        #这个描述了我们访问或者请求的网站的协议类型
                    # business.sohu.com 主机名
                        #主机名也是根目录的意思
                    #/20161015/ 路径
                    #n470353142.shtml 资源名称
        #2、开始请求
            #发送请求头
                #原始头信息
            #{
                "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",#接收内容类型
                "Accept-Encoding":"gzip, deflate",#接收的方式
                "Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",#接收的语言
                "Connection":"keep-alive",#请求的一个状态,如果是keep-alive代表在你浏览的过程当中一直保持连接
                "Cookie":"""SUV=1512091847247909; vjuids=-3463a8159.151b8fdeec5.0.206aa7d4ebb2e; vjlast=1450507628.1476537570.23
 ;sohutag=8HsmeSc5NCwmcyc5NCwmYjc5NSwmYSc5NCwmZjc5NCwmZyc5NCwmbjc5NCwmaSc5NCwmdyc5NCwmaCc5NCwmYyc5NCwmZSc5NCwmbSc5NCwmdCc5NH0; IPLOC=CN5000""",
            #标注用户身份 #曲奇 小饼干
                #在http请求当中cookie是一个身份的标识
                    #在以前的一个时期我们访问网站的时候是一种匿名的状态
                    #cookie 类似于麻辣烫当中的号牌  
                        #当用户请求服务器的时候,服务器响应并且给用户一身份
                            #那么用户保存此身份,并以此身份访问整个网站
                "Host":" business.sohu.com",#请求主机
                "If-Modified-Since":"Sat, 15 Oct 2016 09:28:31 GMT",#时间
                "User-Agent":"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04"#浏览器信息
                #浏览器的身份
                    #爬虫的礼貌
                        #如果是真的浏览器,我们人为的访问速度是有限的,但是我们用爬虫那么访问速度可以极快,给服务器造成压力
                            #希望大家有类似于sleep的功能
                        #使用爬虫有一部分程序员带着不纯的目的,爬取一下禁止爬取的内容,比如付费内容
                    #正是因为有好多不礼貌的爬虫,所以,有部分网站反爬虫
                        #1、user_agent
                        #2、页面从定向
                        #3、页面加码
                        #4、ajax或js异步请求
                        #5、各种加密
                        #6、统统的藏起来,不让你找到请求地址
                        #7、身份的严格识别
                }

            #发送请求的数据
                #请求方式
                    #POST 隐藏的请求方式
                    #GET 存放在url上的请求方式
                        #get 请求以问号开始,以“&”分割,呈“键=值”的形式
                                # t=8a81Gk9yDukgCvKLbPdgn%2B%2BoFqDB6ltm76EXGi41a5QMQGbactjxhPV3VE0&rqlang=cn&rsv_enter=0&rsv_sug3=5&
                                # rsv_sug1=3&rsv_sug7=100&inputT=4222&rsv_sug4=5637
            
            #响应头部
            {
                "Cache-Control":"no-transform, max-age=120",
                "Connection":"keep-alive",
                "Content-Encoding":"gzip",
                "Content-Length":21388,
                "Content-Type":"text/html",
                "Date":"Sat, 15 Oct 2016 14:04:23 GMT",
                "Expires":"Sat, 15 Oct 2016 14:06:23 GMT",
                "FSS-Cache":"HIT from 8802488.15945922.9802277",
                "FSS-Proxy":"Powered by 2969695.4280425.3969395",
                "Last-Modified":"Sat, 15 Oct 2016 09:28:32 GMT",
                "Server":"SWS", #用户请求的服务器的类型
                "Vary":"Accept-Encoding",
                "X-RS":"10587158.19762208.11340962"
                }
            #响应内容
                #text/html
                #img/jpg
            
            #加载编译响应内容
                #由于浏览器不同
                #所以导致写前端的同学都会遇到兼容性的问题
                
#判断内容编码
    #chardet 是一个三方的用来判断字符串编码的模块但是不太准确


#设置url
#设置头部
header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04"
    }
#发起请求
#req = urllib2.Request(header,data = None,)
req = urllib2.Request(url, data=None, headers=header)
#接收响应
ope = urllib2.urlopen(req)
#print(ope)
#print(ope.read())
econtent = etree.HTML(ope.read())#构建xpath 树状结构
    #xpath 匹配语法
        # // 是代表所有的
        # /  代表层级
        # [] 筛选
        # @ 筛选条件
    #xpath 匹配到的内容我们又三个方法
        #tag 返回对象标签名称
        #attrib 返回对象属性
        #text 返回对象当中的文本
        
#myx = econtent.xpath("//div")
myx = econtent.xpath("//p")

for i in myx:
    #print(i.tag)
    #print(i.attrib)
    print(i.text)
#for i in ope.readlines():
#    print(i)
#ope.close()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值