記一次爬去噹噹網書籍的coding

                                               正則表達式的重要

正則表達式是很重要很重要很重要,所以這個很重要輸入三遍才能證明,哈哈哈哈。

最近公司有一個框架使用到了純python寫的,然後剛好入職也沒多久,然後又剛好我這部分的東西需要用到python的那個框架試試,所以我就很幸運的這幾天都在學習關於python的東西。

這個框架叫Airflow,具體的很多功能點現在還沒有弄清楚,慢慢學吧,哈哈哈,不急不急。

好吧,進入話題,因爲學習了python,也就看看傳說中的python捉取數據,感覺捉取到牛XXXX.哈哈哈。講真,在捉數據,和對數據保存到.txt .csv等格式文件,很方便。

 

這裏就貼下捉噹噹網書籍的代碼

import requests
import re
import json

def main(page):
    url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-' + str(page)
    html = request_data(url)
    items = parse_data(html)
    print('items : ' , items)
    #if items != None:
    #    for item in items:
    #        write_data_tofile(item)
    for item in items:
        print('item : ' , item)
        write_data_tofile(item)


def request_data(url):
    try:
        resp = requests.get(url)    
        if resp.status_code == 200:
            return resp.text
    except requests.RequestException:
        return None        

def parse_data(html):
    pattern = re.compile('<li>.*?list_num.*?(\d+).</div>.*?<img src="(.*?)".*?class="name".*?title="(.*?)">.*?class="star">.*?class="tuijian">(.*?)</span>.*?class="publisher_info">.*?target="_blank">(.*?)</a>.*?class="biaosheng">.*?<span>(.*?)</span></div>.*?<p><span\sclass="price_n">&yen;(.*?)</span>.*?</li>',re.S)
    items = re.findall(pattern,html)
    for item in items:
        yield {
           'range': item[0],
           'iamge': item[1],
           'title': item[2],
           'recommend': item[3],
           'author': item[4],
           'times': item[5],
           'price': item[6]
        }

def write_data_tofile(item):
    print('開始寫入數據 : ====> ')
    with open('保存文件路徑,比如book.txt','a',encoding='UTF-8') as f:
        f.write(json.dumps(item,ensure_ascii=False) + "\n")
        f.close

if __name__ == '__main__':
    for i in range(1,26):
        main(i)     

 

  這裏需要去用瀏覽器對 

http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-1

最後的1變爲2,也就是實現了翻頁功能。

然後使用正則表達式來對數據進行過濾操作,然後獲取每行自己想要的數據,最後寫入到book.txt 文件中.

 

最後貼上一張效果圖,哈哈哈哈.想來也說也是比較簡單的,就是正則表達式那塊需要加強纔行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章