zoukankan      html  css  js  c++  java
  • python爬虫(一)

    爬虫得例子

    百度、谷歌、360搜索等(把关键字相关得网页提取出来)

    爬虫是什么:

    爬虫是一个模拟人类请求网站行为的程序,自动请求网页,把数据抓取下来,使用一定的规则提取有价值的数据。

    爬虫的种类:

    分为通用爬虫和聚焦爬虫

    通用爬虫是利用搜索引擎来抓取的;聚焦爬虫是利用程序进行抓取,并进行抓取有用的信息。

    为什么选择python来进行爬虫:

    在学过的几种语言中,c和c++运行效率很高,但是学习和开发成本很大;java的语言代码量很大,一个爬虫程序会随着网址及内容的改变而需要重构,重构时需要花费很多的成本;php并发处理能力弱,速度和效率都达不到爬虫的要求。

    urllib库:是一个基本的网络请求库,可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据

    urlopen函数:网络请求的方法

    使用:

    from urllib import request  //导入request
    resp = requset.urlopen("http://baidu.com")//想要抓取的网站
    print(resp.read()) //可以读取网站了内容

    urlopen函数

     read(10)读取10个字节

    readline()读取一行

    readlines()读取多行

    getcode()返回状态值

     urlretrieve函数:把网页上的文件保存导本地

    request.urlretrieve('http://www.baidu.com/','baidu.html')

    这个函数中第一个引号里面的是要下载的网址,第二个引号里面的是对要下载的文件的命名

    运行之后就会出现一个baidu.html文件

     打开之后,可以选择打开该网页的浏览器

     选择浏览器之后:

     ulrencode函数:对浏览器发送请求时,如果url中包含了中文或者其他特殊字符,浏览器会自动进行便阿门,如果使用代码发送请求,就需要我们手动编码,所以使用urlencode函数来实现,把字典数据转换为url编码数据。

    params ={'name':'张三',"age":18,'greet':"hello world"}//hello world中间又空格,所以要进行编码
    result =parse.urlencode(params)//使用urlencode函数对其进行编码
    print(result)

     例如:

    url='http://www.baidu.com/s?wd=刘德华'
    resp=request.urlopen(url)
    print(resp.read())

    结果:

     未进行编码,代码运行报错,显示ascii不能识别

    url='http://www.baidu.com/s'
    params={'wd':'刘德华'}//把汉字的部分拿出来
    ps=parse.urlencode(params)//进行编码
    url =url+"?"+ps//拼接
    resp =request.urlopen(url)//请求网址
    print(resp.read())//读取

    结果得到网址的内容:

    parse_qs函数:将经过编码后的url进行解码。

    params ={'name':'张三',"age":18,'greet':"hello world"}
    qs=parse.urlencode(params)//编码
    result=parse.parse_qs(qs)//解码
    print(result)

    结果:

  • 相关阅读:
    思考:学习redis的数据结构应该从三个维度来学习?
    思考:一个程序员老说不会碰到或者用到复杂的数据结构或者算法,是这样吗?
    思考:软件系统设计的(前期)权衡?
    思考:一个推荐引擎工程师的能力覆盖
    思考:关于服务架构的取舍:
    模拟斗地主真人在线发牌
    java反射机制
    C-练习题
    java-线程的生命周期
    生产者和消费者模型
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/12347058.html
Copyright © 2011-2022 走看看