完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

  1. 按 F12 進入到開發者工具;
  2. 點擊 Network ;
  3. 刷新頁面 ;(按F5)
  4. 找到 Doc ;
  5. 找到左邊 Name 這一欄的第一個(需要爬去的鏈接90%的情況都是第一個);
  6. 點擊右邊的 Headers ;
  7. 找到請求的URL和請求方式。

三、開始撰寫第一隻網絡爬蟲

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

1 import requests2 res = requests.get('http://www.sina.com.cn/')3 res.encoding = 'utf-8'4 print(res.text)

四、用BeautifulSoup4剖析網頁元素

測試示例:

 1 from bs4 import BeautifulSoup 2 html_sample = ' \ 3  \ 4  \ 5 

Hello World

\ 6 \ 7 \ 8 \ 9 '10 11 soup = BeautifulSoup(html_sample, 'lxml')12 print(soup.text)

五、BeautifulSoup基礎操作

使用select找出含有h1標籤的元素

soup = BeautifulSoup(html_sample)header = soup.select('h1')print(header)print(header[0])print(header[0].text)

使用select找出含有a的標籤

soup = BeautifulSoup(html_sample, 'lxml')alink = soup.select('a')print(alink)for link in alink: print(link) print(link.txt)

使用select找出所有id為title的元素(id前面需要加#)

alink = soup.select('#title')print(alink)
完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

六、觀察如何抓取新浪新聞信息

關鍵在於尋找CSS定位

  • Chrome開發人員工具(進入開發人員工具後,左上角點選元素觀測,就可以看到了)
完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!


  • Chrome尋找元素定位.png
  • Firefox開發人員工具
  • InfoLite(需FQ)

七、製作新浪新聞網絡爬蟲

抓取時間、標題、內容

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

內文資料信息說明圖.png

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

獲取新聞內文標題、時間、來源

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

其中涉及時間和字符串轉換

from datetime import datetime// 字符串轉時間 --- strptimedt = datetime.strptime(timesource, '%Y年%m月%d日%H:%M')// 時間轉字符串 --- strftimedt.strftime(%Y-%m-%d)
完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

整理新聞內文步驟:

1、抓取;

2、獲取段落;

4、去掉空格;

5、將空格替換成 \n ,這裡可以自行替換成各種其他形式;

最終簡寫為一句話。

抓取新聞評論數

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

解釋:

評論是是通過JS代碼傳過來的;既然是JS,那麼通過AJAX傳過來的概率很高,於是點到 XHR中看,但是發現Response中沒有出現總評論數 2 ; 然後就只能去 JS 裡面了,地毯式搜索,找哪個Response裡出現了總評論數 2 ,終於找到了。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

找到鏈接和請求方式

今天補的截圖,評論數實時增加,請不要覺得奇怪 ^_^

然後就可以擼碼了。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

解釋:

var data={......} 看著很像是個 json 串,去掉 var data= ,使其變為 json 串。

可以看到, jd 串中就是評論的信息了。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

回到Chrome開發工具中,瀏覽評論數量。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

獲取新聞標識符(新聞ID)

方式1:切割法

# 取得新聞編號newsurl = 'http://news.sina.com.cn/o/2017-12-06/doc-ifypnyqi1126795.shtml'newsid = newsurl.split('/')[-1].rstrip('.shtml').lstrip('doc-i')newsid

方式2:正則表達式

import rem = re.search('doc-i(.*).shtml', newsurl)newsid = m.group(1)newsid

八、建立獲取評論數函數

做一個總整理,把剛剛取得評論數的方法整理成一個函數。之後有新聞網頁的鏈接丟進來,可以通過這個函式去取得它的總評論數。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

九、建立新聞內文信息抽取函數

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

十、從列表鏈接中取出每篇新聞內容

如果 Doc 下面沒有我們想要找的東西,那麼就有理由懷疑,這個網頁產生資料的方式,是通過非同步的方式產生的。因此需要去 XHR 和 JS 下面去找。

有時候會發現非同步方式的資料 XHR 下沒有,而是在 JS 下面。這是因為這些資料會被 JS 的函式包裝,Chrome的開發者工具認為這是JS文件,因此就放到了 JS 下面。

在 JS 中找到我們感興趣的資料,然後點擊 Preview 預覽,如果確定是我們要找的,就可以去Headers 中查看 Request URL 和 Request Method 了。

一般 JS 中的第一個可能就是我們要找的,要特別留意第一個。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

1、選擇Network標籤

2、點選JS

3、 找到頁面鏈接page=2

處理分頁鏈接

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

注意頭尾,需要去掉頭和尾,將其變成標準的 json 格式。

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

十一、建立剖析清單鏈接函數

將前面的步驟整理一下,封裝到一個函式中。

def parseListLinks(url): newsdetails = [] res = requests.get(url) jd = json.loads(res.text.lstrip('newsloadercallback()').rstrip(');')) for ent in jd['result']['data']: newsdetails.append(getNewsDetail(ent['url'])) return newsdetails

十二、使用for循環產生多頁鏈接

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

十三、批次抓取每頁新聞內文

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

十四、 使用pandas整理數據

Python for Data Analysis

  • 源於R
  • Table-Like格式
  • 提供高效能、簡易使用的資料格式(Data Frame)讓使用者可以快速操作及分析資料
完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

十五、保存數據到數據庫

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

完全零基礎如何玩爬蟲?這篇是你入門爬蟲必看之選!附上源代碼!

持續戰鬥到這裡,第一隻網絡爬蟲終於完成。看著最終的結果,很有成就感啊!^_^

大家感興趣的可以試一試,歡迎討論交流~~~

特別贈送: GitHub代碼傳送門

感謝大家耐心地閱讀,如果能對大家有一點點幫助,歡迎點亮我的GitHub星標,謝謝~~~


分享到:


相關文章: