正則表達式的重要
正則表達式是很重要很重要很重要,所以這個很重要輸入三遍才能證明,哈哈哈哈。
最近公司有一個框架使用到了純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">¥(.*?)</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 文件中.
最後貼上一張效果圖,哈哈哈哈.想來也說也是比較簡單的,就是正則表達式那塊需要加強纔行。