• 爬虫基础知识与简单爬虫实现


    css规则:选择器,以及一条或者多条生命。

    selector{declaration1;,,,;desclarationN}

    每条声明是由一个属性和一个值组成

    property:value

    例子:

    h1{color:red;fontsize:14px}

    元素选择器:直接选择文档元素

    比如head,p
    
    类选择器:
    
    元素的class属性,比如<h1 class =”important”>
    
    类名就是important
    
    .important选择所有有这个类属性的元素
    
    可以结合元素选择器,比如p.important
    

      

    id选择器

    元素的id属性,比如<h1 id=”aa”>
    
    id就是aa
    
    #aa用于选择id=aa的元素
    
    可以结合元素选择器,比如,p.#aa
    
    与类选择器的异同
    
    id一个文档只能出现一次
    
    id选择器不能使用单词列表
    
    与类选择器一样,都区分大小写
    

      

    属性选择器

    选择有某个属性的元素,而不论值是什么
    
    *[title]选择所有包含title属性的元素
    
    a[href]选择所有带有href属性的锚元素
    
    还可以有多个属性,比如:a[href][title],注意这里是要同时满足
    
    限定值:a[href=”www.so.com”]
    

      

    后代(包含)选择器

    选择某元素后代的元素(层级不受限制)
    
    选择h1元素的em元素:h1 em
    
    子元素选择器
    
    范围限制在子元素
    
    选择h1元素的子元素strong:h1>strong
    

      

    XPath语法:

    路径表达式:

    nodename选取此节点的错有子节点
    
    /从根节点选取
    
    //从匹配的当前节点选择文档中的节点,不考虑他们的位置
    
    。选取当前节点
    
    ..选取当前节点的父节点
    
    @选取属性
    

      

    谓语结构

    嵌在[]中用来查找某个特定节点或者包含某个指定值的节点
    
    /bookstore/book[1] 第一个book元素
    
    /bookstore/book[last()最后一个book元素
    
    /bookstore/book[position()<3]选取前两个
    
    //title[@lang]选择所拥有名为lang的属性的title元素
    
    /boolestore/book[price>35.00] 获取大于35以上的值
    

      

    python处理xml方法

    dom把整个xml读如内存,解析为树,因此占用内存大,解析满,有点是可以任意遍历树的节点

    sax流模式,边度边解析,占用内存小,解析的,缺点是需要自己处理时间

    量小用dom,量大用sax

    SAX方法是用格式:

    import string
    from xml.parsers.expat import ParserCreate
    
    '''
    如果要做sax处理
    首先要定义下面三个函数,并且绑定parser的方法
    '''
    
    class DefaultSaxHandler:#创建一个SAX处理器
        def start_element(self,name,attrs):
            self.name=name
            print("element:%s,attrs:%s"%(name,str(attrs)))
    
        def end_element(self,name):
            print("end element:%s"%name)
    
        def char_data(self,text):
            if text.strip():
                print("%s 's text is %s'"%(self.name,text))
    
    
    handler=DefaultSaxHandler()
    parser=ParserCreate() #创建一个parser
    parser.StartElementHandler=handler.start_element   #找到某一个标签
    parser.EndElementHandler=handler.end_element
    parser.CharacterDataHandler=handler.char_data
    
    with open("book.xml","r") as f:
        parser.Parse(f.read())
    

      

    Selenium简介和实战

    简单实用
    关键命令
    find_element(s)_by_tag_name
    find_element(s)_by_css_selector
    find_element_by_id
    find_element_by_name
    find_elements_by_xpath
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_class_name

    简单配置:

    安装:

    在联网的情况下,在Windows命令行(cmd)输入pip install selenium即可自动安装selenium,安装完成后,输入pip show selenium可查看当前的selenium版本

    二、安装三大浏览器驱动driver

         1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list

         2.Firefox的驱动geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/

         3.IE的驱动IEdriver 下载地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/

    三、下载解压后,将chromedriver.exe , geckodriver.exe , Iedriver.exe发到Python的安装目录,例如 D:python 。 然后再将Python的安装目录添加到系统环境变量的Path下面。

    然后打开Python IDLE分别输入以下代码来启动不同的浏览器

    启动谷歌浏览器

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.get('http://www.baidu.com/')
    
    
    
    启动火狐浏览器
    from selenium import webdriver
    
    browser = webdriver.Firefox()
    browser.get('http://www.baidu.com/')


    启动IE浏览器
    from selenium import webdriver
    
    browser = webdriver.Ie()
    browser.get('http://www.baidu.com/')

    爬取17火电商

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from selenium import webdriver
    import time
    
    browser = webdriver.Firefox()
    browser.set_page_load_timeout(30)
    browser.get('http://www.17huo.com/search.html?sq=2&keyword=%E7%BE%8A%E6%AF%9B')
    page_info = browser.find_element_by_css_selector('body > div.wrap > div.pagem.product_list_pager > div')
    # print(page_info.text)
    pages = int((page_info.text.split(',')[0]).split(' ')[1])
    for page in range(pages):
        if page > 2:
            break
        url = 'http://www.17huo.com/?mod=search&sq=2&keyword=%E7%BE%8A%E6%AF%9B&page=' + str(page + 1)
        browser.get(url)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(3)   # 不然会load不完整
        goods = browser.find_element_by_css_selector('body > div.wrap > div:nth-child(2) > div.p_main > ul').find_elements_by_tag_name('li')
        print('%d页有%d件商品' % ((page + 1), len(goods)))
        for good in goods:
            try:
                title = good.find_element_by_css_selector('a:nth-child(1) > p:nth-child(2)').text
                price = good.find_element_by_css_selector('div > a > span').text
                print(title, price)
            except:
                print(good.text)
    

      

    结果:

    1页有24件商品
    2017秋冬新款女装毛呢格子大 ¥90.00
    7923男士中长款风衣毛妮外套
    货号:7923
    ¥100.00
    四季星座416(原xz401)
    宽松中长款开衫长袖2017年秋 ¥150.00
    羊毛甜美针织衫/毛衣蝙蝠袖20 ¥150.00
    2017年秋季针织衫/毛衣羊毛 ¥150.00
    厚中长款蝙蝠型针织衫/毛衣羊毛 ¥140.00
    2017年秋季针织衫/毛衣甜美 ¥110.00
    毛呢西装男秋冬季店主风韩版休闲
    货号:x605
    ¥95.00
    四季星座263(原558)
    店主风秋冬季韩版呢子西装男英伦
    货号:x605
    ¥95.00
    四季星座263(原558)
    时尚格子气质百搭蝙蝠型中长款厚 ¥120.00
    蝙蝠型中长款厚长袖开衫2017 ¥140.00
    2017秋冬新款女装韩版撞色拼 ¥85.00
    秋季新品 男士毛衣纯色圆领薄款
    货号:B407/M01/P30
    ¥25.00
    电商基地B407
    条纹气质百搭韩版甜美蝙蝠袖长袖 ¥135.00
    毛呢西装男店主秋冬季韩版休闲西
    货号:x605
    ¥95.00
    四季星座263(原558)
    蝙蝠袖甜美羊毛针织衫/毛衣20 ¥125.00
    2017年秋季针织衫/毛衣羊毛 ¥140.00
    中长款蝙蝠型开衫长袖2017年 ¥110.00
    针织衫/毛衣羊毛甜美2017年 ¥110.00
    时尚气质百搭甜美气质韩版羊毛长 ¥135.00
    时尚气质百搭韩版甜美蝙蝠袖长袖 ¥150.00
    蝙蝠袖甜美羊毛针织衫/毛衣20 ¥145.00
    2017年秋季针织衫/毛衣羊毛 ¥125.00
    甜美羊毛针织衫/毛衣蝙蝠袖长袖 ¥145.00
    2页有24件商品
    流苏斗篷披肩外套秋冬毛衣披风中 ¥145.00
    秋冬新款喇叭袖圆领毛衣套头针织 ¥59.00
    韩版宽松中长款套头毛衣女麻花高 ¥69.00
    秋装新款圆领宽松套头麻花毛衣女 ¥46.00
    新款毛衣女中长款连衣裙针织衫宽 ¥48.00
    流苏毛衣女秋冬装2017新款套 ¥69.00
    2017秋装新款韩版中长款宽松 ¥69.00
    圆领宽松针织衫2017春秋新款 ¥69.00
    毛衣女连衣裙秋冬套头中长款打底 ¥69.00
    毛衣女套头秋季2017新款韩版 ¥59.00
    中长款套头毛衣女秋冬韩版针织衫 ¥69.00
    2017秋冬新款韩版中长款时尚 ¥69.00
    春秋韩版气质修身高领毛衣女中长 ¥69.00
    毛衣女套头秋季新款韩版纯色短款 ¥69.00
    8417A-802-P175钱 ¥175.00
    中长款套头毛衣女秋冬韩版针织衫 ¥69.00
    MY630-P50 秋冬雪花针
    货号:MY630-P50
    ¥50.00
    四季星座229
    MY632-P45超柔质感羊毛
    货号:MY632-P45
    ¥45.00
    四季星座229
    MY632-P45 超柔质感羊
    货号:MY632-P45
    ¥45.00
    四季星座229
    MY632-P45 超柔质感羊
    货号:MY632-P45
    ¥45.00
    四季星座229
    中长款修身2017年秋季西装领 ¥610.00
    四色!羊毛衫店主风 破洞毛衣
    货号:A064-MY20 P65
    ¥65.00
    电商基地A064-1(原XZ606A)
    中长款长袖2017年秋季暗扣西 ¥760.00
    四色!羊毛衫线衫 破洞毛衣男店
    货号:A064-MY20 P65
    ¥65.00
    电商基地A064-1(原XZ606A)
    3页有24件商品
    2017年秋冬季新款年轻女装短 ¥75.00
    四色!羊毛衫线衫 破洞毛衣男店
    货号:A064-MY20 P65
    ¥65.00
    电商基地A064-1(原XZ606A)
    2017年秋季针织衫/毛衣长袖 ¥90.00
    5903-P90-B215 2
    货号:5903-P90-B215
    ¥90.00
    电商基地B215
    西装领甜美暗扣2017年秋季长 ¥635.00
    四色!羊毛衫店主风线衫 破洞毛
    货号:A064-MY20 P65
    ¥65.00
    电商基地A064-1(原XZ606A)
    针织衫/毛衣无袖套头中长款V领 ¥75.00
    2017新款秋冬季中长款纯色针 ¥75.00
    2017秋冬新款青年男士圆领毛
    货号:D286
    ¥55.00
    电商基地A418
    长袖2017年秋季修身系带甜美 ¥610.00
    中长款直筒套头长袖2017年秋 ¥105.00
    5903-P90-B215 2
    货号:5903-P90-B215
    ¥90.00
    电商基地B215
    2017年秋冬季新款年轻女装中 ¥110.00
    2017年秋冬季新款年轻女装流 ¥90.00
    2017新款秋冬季中长款纯色袖 ¥75.00
    青少年秋季毛衣男学生款圆领毛线
    货号:D288
    ¥65.00
    电商基地A418
    针织衫/毛衣2017年秋季蝙蝠 ¥68.00
    套头中长款无袖V领甜美纯色针织 ¥75.00
    2017新款秋冬季中长款纯色针 ¥65.00
    毛呢外套西装领单排扣2017年 ¥115.00
    5903-P90-B215 2
    货号:5903-P90-B215
    ¥90.00
    电商基地B215
    春秋款潮流男士毛衣秋冬季圆领学
    货号:D288
    ¥65.00
    电商基地A418
    大咖 电商A088-M1710
    货号:电商A088-M17102-
    ¥45.00
    电商基地A088
    2017年秋冬季新款年轻女装纯 ¥80.00
    

      

  • 相关阅读:
    Luogu P1131 时态同步
    Codeforces Round #507 B. Shashlik Cooking
    Codeforces Round #507 A. Palindrome Dance
    Luogu P3818 小A和uim之dark♂逃离 Ⅱ
    Luogu P1373 小a和uim之dark♂逃离 Ⅰ
    Luogu P4822 [BJWC2012]冻结
    Luogu P2575 高手过招(博弈论)
    Luogu P1074靶形数独
    Luogu P2323「皇后游戏」
    GodFly的寻宝之旅·状压DP
  • 原文地址:https://www.cnblogs.com/pyrene/p/7503076.html
Copyright © 2020-2023  润新知