正则表达式的重要
正则表达式是很重要很重要很重要,所以这个很重要输入三遍才能证明,哈哈哈哈。
最近公司有一个框架使用到了纯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 文件中.
最后贴上一张效果图,哈哈哈哈.想来也说也是比较简单的,就是正则表达式那块需要加强才行。