Python爬蟲大作業


一、題目:

  獲取並保存目標網站的下圖所示的所有英文名,網頁轉換通過點擊more names刷新名字並將各個英文名子目錄下,去獲取並保存每一個英文名的名字、性別、寓意、簡介如下圖所示內容紅色標記框內的內容:

 

 二、爬取步驟:

 

1.數據服務

爬取步驟:

  (1)爬取整個動態網頁信息內容;

  (2)解析網頁內容,利用正則表達式獲取有效信息;

  (3)把爬取下來的信息采用csv進行存儲;

  (4)進行必要的手動的數據清理和美化。

2.解析服務

解析步驟:

  (1)利用headers直接訪問網頁內容;

  (2)爬取頁面信息;

  (3)解析頁面;

  (4)形成text數據。

  (5)實時獲得網站的英文名、性別、寓意、簡介等內容。

流程圖:

 

 

 三、源代碼:

按步驟要求一步一步將數據爬取並保存。

 1 import requests#請求庫
 2 import re#表達式解析庫
 3 import csv  4 def html_save(s):#爬取內容保存函數
 5     with open('save3.csv','a', newline='')as f:#以追加的方式存數據newline控制文本模式之下,一行的結束字符
 6         writer = csv.writer(f)#將數據寫入csv文件
 7  writer.writerow(s)  8 
 9 def get_url(n):#保存網址
10     urls=[] 11     for i in range(1,101):#測試得出網址范圍
12         urls.append('http://www.nymbler.com/nymbler/more/%s'%i) 13     return urls 14     pass
15 
16 def get_detail(url):#對網頁內容進行解析獲取
17     headers = {'Cookie':"heroku-session-affinity=AECDaANoA24IAaj0sYj+//8HYgAH2hNiAAsB42EDbAAAAANtAAAABXdlYi4zbQAAAAV3ZWIuMm0AAAAFd2ViLjFqTiF9lGfQyz4HBcluZEIivsLibgo_; PLAY_SESSION=e625836109d6e09af14be41657c35e808ca31e72-session_id=240bcff7-ebb5-49ee-8fa4-ffcc5ba32e48; _ga=GA1.2.408125030.1575511582; _gid=GA1.2.1377013858.1575511582; td_cookie=18446744071831041204; _gat_gtag_UA_1763772_1=1"}#反爬蟲請求頭
18     response = requests.post(url)#解析網頁
19     docx=(response.text)#得到解析文本
20     name=re.findall(r'"name":"([^"]+)"',docx)#正則匹配name的value
21     gender=re.findall(r'"gender":"([^"]+)"',docx) #正則匹配gender的value
22     info=re.findall(r'"info":"([^"]+)"',docx) 23     meaning=re.findall(r'"meaning":"([^"]+)"',docx) 24     for i in range(len(meaning)):#將獲取的信息進行有序處理
25         tmp=[] 26  tmp.append(name[i]) 27  tmp.append(gender[i]) 28  tmp.append(meaning[i]) 29  tmp.append(info[i]) 30         html_save(tmp)#對信息進行保存
31     return tmp 32     pass
33 
34 def get_all(n):#獲取所有網頁的信息
35     alldata=[] 36     for url in get_url(n): 37         alldata.extend(get_detail(url))#將get_url(n)內的所有網頁一一進行解析保存
38     return alldata 39     pass
40 
41 get_all(100)#函數調用

四、運行結果:

部分結果展示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM