zoukankan      html  css  js  c++  java
  • python爬虫学习记录

    爬虫基础

    urllib,urllib2,re都是python自带的模块

    urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏览器访问url

    而urllib仅可以技术url,不可以伪装user-agent字符串等,urllib提供的urlencode方法用来get查询字符串的产生,所以要搭配使用,但urllib2使用的更广泛

    re是正则表达式模块,用来分析网站信息

    (.*?)是常用的匹配模式,匹配出了换行符以外的字符,是非贪婪模式,读取最少的匹配信息

    在编译模式中是用re.S可以让(.*?)匹配任意字符,包括换行符。

    一个简单的例子

    import urllib2,re
    
    def getPage(url):
    
      try:
    
        request = urllib2.Request(url, headers=headers)
    
        response = urllib2.urlopen(request, data, timeout)
    
        page = response.read()
    
      except Exception, e:
    
        print e
    
      return page

    headers,data,timeout可以根据需要来填写

    下载图片urllib.urlretrieve(url, "name.jpg")

    try:

    except Exception, e:

      print e

    捕获所有异常并打印异常信息

    基础教程http://cuiqingcai.com/1052.html

    由于re模块不美观,后面学习了BeautifulSoup的使用

    安装BeautifulSoup

    pip install BeautifulSoup4

    相关用法https://cuiqingcai.com/1319.html

    基本实例

    from bs4 import BeautifulSoup
    
    def getMessage(page):
    
      soup = BeautifulSoup(page)
    
      parent = soup.find_all()
    
      if parent:
    
        for child in parent:
    
          do somthing
    
      else:
    
        print "parent not found"

    逐层查找先find()在find_all()

    由于urllib2只能操作静态网站,为了爬动态网站,可以使用selenium工具,selenium是可以用脚本打开浏览器进行爬虫的工具

    由于selenium3会遇到各种问题,所以使用selenium2.53.6

    安装selenium2.53.6

    pip install selenium==2.53.6

    selenium和firefox或chrome或IE等等浏览器混合使用

    由于firefox版本不同会遇到不兼容问题,所以使用firefox46.0.1

    基本实例

    from selenium import webdriver
    
    browser = webdriver.Firefox()
    
    browser.get("http://www.baidu.com")

    打开网站后就可以用bs或者re来分析网站信息

    在学习过程中发现了一个爬虫框架scrapy,感觉挺好用的

    安装scrapy

    安装scrapy有点麻烦需要安装各种库

    下载教程http://blog.csdn.net/php_fly/article/details/19364913

    其中的zope.interface可以通过pip install zope.interface来安装,其他的库可以直接从云盘下载exe文件安装

    在python中import各种模块验证是否安装成功

    最后一步pip install Scrapy

    在命令行中输入scrapy验证是否安装成功

    基础教程http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

    基本实例

    import scrapy
    
    class DmozSpider(scrapy.Spider):
        name = "dmoz"
        allowed_domains = ["dmoz.org"]
        start_urls = [
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
        ]
    
        def parse(self, response):
            filename = response.url.split("/")[-2]
            with open(filename, 'wb') as f:
                f.write(response.body)

    dir(),查看当前对象的所有可用方法,type()查看当前对象的类型

    sys.exit(),os.exit()用来退出进程,第一个常用

     yield关键词,此关键词的作用是返回某个对象后继续执行。如果不用该关键字,则直接会在函数中返回。

  • 相关阅读:
    C++的高效从何而来2
    初体验ajax跨域
    ACM在线测评系统评测程序设计与实现
    高效GTD云工具 Manage Your Time
    HTTP 长连接
    使用avalon MVVM框架打造整一套jquery ui
    GhostDoc(注释生成工具)使用方法
    NUnit快速入门 笔记
    ETags
    nodejs + edge + ejs + c#
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/5983387.html
Copyright © 2011-2022 走看看