python 爬蟲 使用正則爬取51job內容並存入txt
阿新 • • 發佈:2018-12-14
python爬蟲基礎–使用正則提取51job內容輸出到txt
from urllib import request #url url = 'https://search.51job.com/list/020000%252C010000%252C080200%252C070200%252C120300,000000,0000,00,9,99,%25E4%25BA%25BA%25E5%25B7%25A5%25E6%2599%25BA%25E8%2583%25BD,2,1.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=4&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=' #變為請求 r=request.Request(url) #訪問得到結果 res = request.urlopen(r) #讀取並且解碼 #print(res.read().decode('gbk'))#unicode解碼方式 #讀取網頁編碼格式 import chardet html=res.read() # code=chardet.detect(html)['encoding'] # print(code) html=html.decode('gbk') # print(html) #提取 import re #你需要留下的用(.*?),它的前後一定要有一個原來的存在內容,被你刪掉的,用.*?表示 reg = re.compile('<div class="el">.*?<a target="_blank" title="(.*?)".*?<a target="_blank" title="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*?<span class="t5">(.*?)</span>',re.S) # 得到結果,是一個列表 data = re.findall(reg,html) # 寫入到 記事本 with open('51job.txt','w',encoding='utf-8') as file: # 讀取的每一個 each 都是 一個tuple for each in data: # 因為 file.write('只能是字串') for i in each: # 再一次迴圈,一一寫入 file.write(i+' ') #每一條寫完換個行 file.write('\n')