用python爬取亞馬遜物品列表

1. 仔細分析亞馬遜查詢詳細界面能夠看出來,主要關鍵部分有三個地方,這三個地方分別控制了查詢列表的頁面和關鍵字,因此修改這幾個參數能夠改變列表頁數以及模糊查詢的結果php

 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查找能夠獲取單個頁面的全部書籍對象信息。
  html

4. 獲取書籍名稱以及賣家數和優惠信息web

  

  經過分析網頁源碼能夠知道獲取書籍名稱能夠從<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正則表達式

相關文章
相關標籤/搜索