zoukankan      html  css  js  c++  java
  • 用python爬取亚马逊物品列表

    1. 仔细分析亚马逊查询详细界面可以看出来,主要关键部分有三个地方,这三个地方分别控制了查询列表的页面和关键字,所以修改这几个参数可以改变列表页数以及模糊查询的结果

     http://www.amazon.cn/s/ref=sr_pg_3?rh=n%3A658390051%2Ck%3Aphp&page=3&keywords=Java&ie=UTF8&qid=1459478790
     
    2. 通过基础链接以及正则表达式匹配的方法进行替换的方式改变爬取页面,注意由于使用了正则表达式匹配,所以需要引入re模块
     
      source_page = 'sr_pg_'+str(page_num)
       page_index = 'page='+str(page_num)
       newkeywords = "%3A"+keywords+'&'
    
       baseUrl = "http://www.amazon.cn/s/ref=sr_pg_3?rh=n%3A658390051%2Ck%3Aphp&page=3&keywords="
    
       baseUrl,number = re.subn(r'sr_pg_[0-9]+',source_page,baseUrl)
    
       baseUrl,number = re.subn(r'page=[0-9]+',page_index,baseUrl)
    
       baseUrl,number = re.subn(r'%3A(.*?)/&',newkeywords,baseUrl)

    3. 调用F12查看网页源码,可以看到需要爬取的结果列表都是在一个<li></li>标签内,标签id按顺序递增,对urllib2.open(url).read()获取的网页源码用BeautifulSoup处理之后的结果集进行findAll查找可以获取单个页面的所有书籍对象信息。
      

    4. 获取书籍名称以及卖家数和优惠信息

      

      通过分析网页源码可以知道获取书籍名称可以从<h2></h2>标签的string值获取。
      
      
      
      
      而卖家信息和书籍优惠信息可以从<span></span>标签中使用正则表达式获取youHui = re.findall('<span class="a-color-secondary">(.*?)</span>',str(i),re.S)。至于为什么将卖家信息与优惠信息一块爬取。其实是我还没有好的办法区分两个信息,所以各位大神有什么好的方法请指导以下,
      小弟感激不尽了。附上代码(page_num >= 2这个可以去掉,则可以爬取整个列表,调试时可以加上限制,只爬取2页):
       
    #ecoding=utf-8
    from bs4 import BeautifulSoup
    import urllib2
    import re
    import xlsxwriter
    
    keywords = raw_input("请输入您要查询的书籍关键字:")
    
    isLast =1
    page_num = 1
    bookList=[]
    while isLast:
    
            source_page = 'sr_pg_'+str(page_num)
            page_index = 'page='+str(page_num)
            newkeywords = "%3A"+keywords+'&'
            baseUrl = "http://www.amazon.cn/s/ref=sr_pg_3?rh=n%3A658390051%2Ck%3Aphp&page=3&keywords="
            baseUrl,number = re.subn(r'sr_pg_[0-9]+',source_page,baseUrl)
            baseUrl,number = re.subn(r'page=[0-9]+',page_index,baseUrl)
            baseUrl,number = re.subn(r'%3A(.*?)/&',newkeywords,baseUrl)
            
            myUrl = baseUrl + keywords
    
            #伪装成浏览器访问,直接访问的话可能会拒绝
            user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
            headers = {'User-Agent':user_agent}
            #构造请求
            req = urllib2.Request(myUrl,headers=headers)
    
            #访问页面
            myResponse = urllib2.urlopen(req)
            myPage = myResponse.read()
            print "--------------------------------第%d页--------------------------------------" % (page_num)
            myData = BeautifulSoup(myPage,"html.parser")
            rightContent = myData.findAll('li')
            
            for i in rightContent:
                    bookName = i.findAll('h2',attrs={"class":"a-size-medium a-color-null s-inline  s-access-title a-text-normal"})
                    for book in bookName:
                            print "************************************************************************"
                            print ("BOOK_NAME:").decode('utf-8').encode('gb2312') + book.get_text()
                    youHui = re.findall('<span class="a-color-secondary">(.*?)</span>',str(i),re.S)
                    for p in youHui:
                            print p
                    #获取价格
                    price = re.findall('<span class="a-size-base a-color-price a-text-bold">(.*?)</span>',str(i),re.S)
                    for a in price:
                            print ("Price:")+ a
            isLastTrue = myData.findAll('span',attrs={"class":"srSprite lastPageRightArrow"})
            if len(isLastTrue) > 0 or page_num >= 2:
                    isLast = 0
            page_num+=1

    爬取结果如下:
    请输入您要查询的书籍关键字:php
    --------------------------------第1页--------------------------------------
    ************************************************************************
    BOOK_NAME:PHP从入门到精通(第3版)(附光盘)
    (23 卖家)
    Price:¥41.74
    ************************************************************************
    BOOK_NAME:计算机科学丛书:Php和Mysql Web开发(原书第4版)
    (9 卖家)
    再买好书减10元
    Price:¥69.30
    ************************************************************************
    BOOK_NAME:Modern PHP(中文版)
    (14 卖家)
    再买好书减10元
    Price:¥26.90
    ************************************************************************
    BOOK_NAME:深入PHP:面向对象、模式与实践(第3版)
    (11 卖家)
    Price:¥46.90
    ************************************************************************
    BOOK_NAME:PHP编程(第3版)
    (13 卖家)
    Price:¥59.20
    ************************************************************************
    BOOK_NAME:Head First PHP & MySQL(中文版)
    (2 卖家)
    再买好书减10元
    Price:¥76.00
    ************************************************************************
    BOOK_NAME:Django之歌:简易博客搭建教程 (简书小说)
    ************************************************************************
    BOOK_NAME:细说PHP(第2版)(附DVD光盘1张)
    (9 卖家)
    再买好书减10元
    Price:¥78.40
    ************************************************************************
    BOOK_NAME:知乎周刊·编程小白学 Python(总第 103 期)
    ************************************************************************
    BOOK_NAME:码农·JavaScript(总第2期)
    ************************************************************************
    BOOK_NAME:跟兄弟连学PHP(升级版)(附光盘)
    (14 卖家)
    再买好书减10元
    Price:¥80.24
    ************************************************************************
    BOOK_NAME:PHP开发实例大全(基础卷)(附DVD光盘)
    (17 卖家)
    再买好书减10元
    Price:¥76.67
    ************************************************************************
    BOOK_NAME:PHP经典实例(第三版)
    (14 卖家)
    Price:¥76.54
    ************************************************************************
    BOOK_NAME:PHP开发实战1200例(第1卷)(附DVD-ROM光盘1张)
    (12 卖家)
    再买好书减10元
    Price:¥66.20
    ************************************************************************
    BOOK_NAME:零基础学PHP+MySQL (零基础学编程)
    ************************************************************************
    BOOK_NAME:PHP核心技术与最佳实践
    (17 卖家)
    Price:¥66.75
    --------------------------------第2页--------------------------------------
    ************************************************************************
    BOOK_NAME:零基础学PHP+MySQL (零基础学编程)
    ************************************************************************
    BOOK_NAME:PHP+MySQL开发实战(附光盘)
    (16 卖家)
    再买好书减10元
    Price:¥61.60
    ************************************************************************
    BOOK_NAME:Learning PHP,MySQL,JavaScript和CSS(第2版)
    (13 卖家)
    再买好书减10元
    Price:¥57.70
    ************************************************************************
    BOOK_NAME:图灵程序设计丛书:PHP编程实战
    (8 卖家)
    Price:¥46.92
    ************************************************************************
    BOOK_NAME:细说PHP (LAMP技术大系)
    ************************************************************************
    BOOK_NAME:脑动力:PHP函数速查效率手册(附CD光盘1张)
    (4 卖家)
    再买好书减10元
    Price:¥29.50
    ************************************************************************
    BOOK_NAME:PHP开发实例大全(提高卷)(附DVD光盘)
    (15 卖家)
    再买好书减10元
    Price:¥76.67
    ************************************************************************
    BOOK_NAME:PHP编程(第3版)(影印版)
    (7 卖家)
    再买好书减10元
    Price:¥61.50
    ************************************************************************
    BOOK_NAME:Learning PHP设计模式
    (9 卖家)
    再买好书减10元
    Price:¥41.00
    ************************************************************************
    BOOK_NAME:实战突击:PHP项目开发案例整合(第2版)(附光盘)
    (7 卖家)
    再买好书减10元
    Price:¥73.30
    ************************************************************************
    BOOK_NAME:图灵程序设计丛书:PHP与MySQL动态网站开发(第4版)
    (2 卖家)
    Price:¥86.20
    ************************************************************************
    BOOK_NAME:高性能MySQL(第3版)
    (17 卖家)
    再买好书减10元
    Price:¥76.80
    ************************************************************************
    BOOK_NAME:大型网站技术架构:核心原理与案例分析
    (19 卖家)
    再买好书减10元
    Price:¥35.28
    ************************************************************************
    BOOK_NAME:PHP、MySQL与JavaScript学习手册(第4版)
    (11 卖家)
    再买好书减10元
    Price:¥89.60
    ************************************************************************
    BOOK_NAME:PHP实例精通 (编程实例大讲堂)
    (4 卖家)
    Price:¥30.00
    ************************************************************************
    BOOK_NAME:PHP+MySQL网站开发全程实例(第2版)
    (18 卖家)
    再买好书减10元
    Price:¥43.10

  • 相关阅读:
    关于脚本编写的注意点
    关于情报收集以及应用
    关于情报收集以及应用
    关于linux服务器的批量维护、批量升级、
    关于文档
    cf卡中,wtmp文件较大,导致磁盘空间满了
    node.js 对接公众平台
    highcharts的.net本地导出环境安装记录
    兼容 IE,firfox 的时间日期出现 NaN
    IE11无法 登陆银行网站
  • 原文地址:https://www.cnblogs.com/fiyajim/p/5353385.html
Copyright © 2011-2022 走看看