簡單爬蟲入門

看見有意思的圖片想保存到本地,可以用 python 進行批量爬取下載,以下代碼以煎蛋網(http://jandan.net/)為例,對煎蛋網的某一頁面進行爬取。

庫介紹

python 自帶標準庫:urllib (用于下載文件)
python 第三方庫:BeautifulSoup (解析 html 代碼)
? Requests (用于向服務器請求資源 )

偽裝

現在的許多網站都有自己的一套反爬機制,但因為小網站的反爬機制不高,所以做個初級偽裝就可以開始爬取數據了,爬蟲中常用的手段就是偽裝成一個瀏覽器,在瀏覽器中打開網站調試工具找到需要的 User-AgentCookie,構造成一個字典:

import requests,urllib
from bs4 import BeautifulSoup
header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
    'Cookie': 'jdna = 01b0531fab6a989460dd1b231010b496  #1492434771779; Hm_lvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1492430829,1492430927,1492430979; Hm_lpvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1492434773; _ga=GA1.2.1686071134.1492430830; _gat=1'}

作為下面代碼的參數傳入。

向網站發起請求
url = 'http://jandan.net/ooxx/page-0'
code = requests.get(url,header)

get 函數傳入兩個參數,第一個是網站的 url ,第二個是偽裝成瀏覽器的字典參數。

解析

請求發送完畢后,服務器給我們返回一堆信息,有狀態碼,有網頁實體內容等,下面開始解析:

plain_text = code.text
Soup = BeautifulSoup(plain_text, 'lxml') # 實例化解析器Soup
download_links = []
folder_path = 'C://Users/Stone/Desktop/jiandan/' # 存儲位置
for pic_tag in Soup.select('p > img'):    # 獲取圖片下載鏈接
    pic_link = 'http:' + pic_tag.get('src') # 拼接下載鏈接
    download_links.append(pic_link)      #  存入列表

這段代碼中,實例化 html 解析器,然后將每張圖片的地址給保存在一個列表里,其中采用了 bs4 中的 select() 方法,尋找所有具有 p > img 結構的標簽。

開始下載 & 成果展
for item in download_links:
    urllib.urlretrieve(item, folder_path + item[-10:])
print '此頁面下載完成!'

其中用到的是標準庫 urlliburlretrieve() 方法,進行下載操作,第一個參數是圖片 url ,第二個參數是文件名。下載結果如下:

jiandan.png

參考資料:

BeautifulSoup 中文文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Requests 中文文檔:http://cn.python-requests.org/zh_CN/latest/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容