记一次爬去当当网书籍的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 文件中.

 

最后贴上一张效果图,哈哈哈哈.想来也说也是比较简单的,就是正则表达式那块需要加强才行。

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