基于python2.7的爬虫入门教程

工作总是充满挑战的,作为一个敲php代码的码农,应因需求学了一下python,由于网上python2.7的教程比较多,本人果断安装的2.7版本,不过3.5版本已经有了。。。请勿嫌弃。鄙人才疏学浅,仅将自己采坑爬坑的点总结了一下,得出下面的一段小教程,经与同事分享,还是可以的。第一次写博客,哈哈哈,share 起来!


一、python安装及相关使用 (才疏学浅,但喷血整理)
1、版本:python2.7.14
      下载地址:https://www.python.org/
      下载后直接安装,默认安装在C盘
       安装后配置环境变量,path:我的电脑->属性->高级系统设置->环境变量->xx的用户变量->path->编辑,增加一条:C:\Python27。配置好后保存。
       打开cmd,输入python.exe,回车后出现版本信息等,即表示配置成功。
2、爬取网站
      (1)了解网站的robot.txt(robot协议:提示哪些路径禁止爬取,不过非高频爬取是可以的)如:http://www.utc-ic.com/robots.txt
      (2)爬取步骤:
(i)安装第三方库:requests
        requests文档:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
        requests用于获取指定url的html内容
        安装方法:1、打开cmd
         2、使用cd 打开至python内的Scripts文件,回车,输入pip install requests,等待提示信息
         3、测试是否安装成功,打开IDLE,输入import requests,回车,不报错即表示安装成功
        使用方法:1、新建一个*.py文件
         2、设置文本编码:#coding:utf8
         3、引入requests:import requests
         4、简单的获取html
              发送请求:常用的有get、post、put、delete、head、option等
若网页不需要用户登录或cookie等,get请求便可满足
r = requests.get(url,params)     注:r为response对象,存储了服务器的响应内容
url如:http://www.utc-ic.com/
params传其他参数:如将爬虫伪装成某个浏览器(如:Mozilla/5.0、AppleWebKit/537.36、Chrome/62.0.3192.0 、Safari/537.36等)
示例:
          head = {'User-Agent':  'Mozilla/5.0'}
          url = 'http://www.utc-ic.com/'
                  response = requests.get(url, headers=head, timeout=30)    # response 为一个对象
          # 获取状态码
          response.status_code    # 200为访问正常,其他均为访问失败
          # 抛出异常
          response.raise_for_status()      # 200为正常    注:常用于try:  except: 中  
          # 获取response对象的head信息
          response.headers
          # 获取发起请求的头部信息
          response.request.headers    # 若爬虫伪装成某浏览器,则显示的是伪装后的user-agent(如:'user-agent': 'Mozilla/5.0'),否则是:'User-Agent': 'python-requests/2.18.4'(爬虫很诚实呀)
              # 设置编码为文本内容编码
          r.encoding = r.apparent_encoding    # 注:r.encoding为从HTTP header中猜测的响应内容编码方式,如果header中不存在charset,则认为编码为ISO-8859-1     r.apparent_encoding 从内容中分析出的响应内容编码方式
              # 获取url对应的页面内容
          html = r.text      # 我们的目标啊!!!(注意:区分于r.content,r.content获取HTTP响应内容的二进制形式)
          # 打印下前500个字符看看
          print html[:500]
(ii)安装BeautifulSoup
         中文文档:https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
         BeautifulSoup可通过DOM节点的方式获取您想要的内容
         安装方法:1、打开cmd
         2、使用cd 打开至python内的Scripts文件,回车,输入pip install beautifulsoup4,等待提示信息
         3、最后出现Successfully installed Beautifulsoup4即表示安装成功
         使用方法:1、引入BeautifulSoup:from bs4 import BeautifulSoup
          2、使用html.parser解析html
                示例:soup = BeautifulSoup(html, 'html.parser')    # html为(i)中获取得到的
         # 将html缩进整理
         soup.prettify()  
         # 查找一个符合某一标签的某属性的html部分
         target = soup.find('table', attrs={'width': 680})       # 第一个符合此标签的内容 soup.find(标签, 属性)
         # 查找所有符合某一标签的某属性的html部分
          targets = soup.find_all('table', attrs={'width': 680})  
         # 获取目标中的文字内容
         target.text
         # 注意:通常在选择匹配过程中需要用到正则匹配,这是需要引入re模块:import re
         re 有search、match、findall等方法。如:re.match(r'[1-9]\d{5}', 'BAT 100081'),注:第一个参数为正则规则,第二个参数为待匹配的字符串,search为从头匹配
         re 的其他教程依需求搜索吧。。。鄙人学艺不精,推荐菜鸟教程:http://www.runoob.com/python/python-reg-expressions.html
(iii)如何生成excel呢?
          A:第三方库xlwt
          安装方法:pip install xlwt
          使用方法:1、import xlwt
           示例:# 创建workbook,同时设置编码
     workbook = xlwt.Workbook(encoding='utf-8')
    # 创建一张sheet表,如名为:test
    sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
    # 坐标法写入内容
    sheet.write(x,y, text)      # x:横坐标;   y:纵坐标 ; text:待写入的内容
    # 保存Excel
    workbook.save(path)     # path为该文件保存路径,同时设定了.xls文件名称,如:'D:/EXCEL/test.xls'
(iiii)我想建立文件夹。
           python自带os模块,可用于建立文件夹
           示例:1、引入os模块:import os
    2、定义一个目录路径,如:path = "D:/Excel/work/"
    3、判断path是否存在,若不存在则多级建立(比较方便)
          if  not os.path.exists(path) :
os.makedirs(path)
   4、so easy end
(v)如何爬取动态页面?
         工具:selenium +  chromedriver  
         工具装起:1、下载并安装seleinum:https://pypi.python.org/pypi/selenium#downloads (内含教程及四大浏览器相应驱动器的下载地址) 
                将selenium-3.6.0-py2.py3-none-any.whl放在python27下
                在cmd中 pip install selenium
         2、下载谷歌驱动器
                送上一篇博客:http://blog.csdn.net/wang8978/article/details/52934506,里面有驱动器下载地址
                我的谷歌浏览器版本是: 62.0.3192.0(正式版本) (32 位) 
                查看版本方式:浏览器右上角三个垂直点->帮助->关于 Google Chrome   
                针对 62.0.3192.0 版本,我选择的驱动器版本为2.30(chromedriver_win32.zip),使用最高版本时可驱动浏览器,但无法打开网址。
                下载后,解压,将chromedriver.exe放在Python27下即可,无需其他操作
        3、送上一篇相关视频教程:http://www.iqiyi.com/w_19ru4zw6w9.html
       示例代码:
      from selenium import webdriver
      from selenium.common.exceptions import TimeoutException
                              from selenium.webdriver.common.by import By
                    from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      driver = webdriver.Chrome()
              wait = WebDriverWait(driver, 10)
            driver.get(url)
              # 判断加载是否成功
            image = wait.until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "#product-tree-button > div.right-module-text"))     # 通过css选择器获取需点击的内容
          )
            image.click()    
            # 等待判断,获取点击后的页面html,转码
          html = driver.page_source
              html_encode = html.encode('utf8')
                             
                              结束!
 




心累,过程中可能出现编码问题,尝试用下面的方法解决
import sys
reload(sys)
sys.setdefaultencoding("utf-8")


还不行的话,问问度娘吧         



猜你喜欢

转载自blog.csdn.net/m0_37391757/article/details/78232914