日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络爬虫入门

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络爬虫入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網絡爬蟲入門

  • 一、初識網絡爬蟲
    • (一)網絡爬蟲定義
    • (二)網絡爬蟲原理
    • (三)使用范圍
    • (四)爬蟲工作的過程
    • (五)爬蟲分類
      • 1.通用網絡爬蟲
      • 2.增量爬蟲
      • 3.垂直爬蟲
      • 4.Deep Web爬蟲
  • 二、爬取南陽理工學院ACM題目網站 http://www.51mxd.cn/ 練習題目數據
    • (一)新建.py文件
    • (二)爬取結果
    • (三)代碼分析
  • 三、爬取重慶交通大學新聞網站中近幾年所有的信息通知(http://news.cqjtu.edu.cn/xxtz.htm) 的發布日期和標題全部爬取
    • (一)確定爬取信息的位置
    • (二)代碼實現
    • (三)運行結果
  • 四、總結
  • 五、參考資料

一、初識網絡爬蟲

(一)網絡爬蟲定義

  • 網絡爬蟲英文名叫Web Crawler戒Web
    Spider。
  • 它是一種自動瀏覽網頁并采集所需要信
    息癿程序。

互聯網示意圖

  • 每個節點都是一個網頁
  • 每條邊都是一個超鏈接
  • 網絡爬蟲就是從這樣一個網絡圖中抓取感興趣的內容

(二)網絡爬蟲原理

  • 爬蟲從初始網頁的URL開始, 獲取初始網頁上的URL;
  • 在抓取網頁的過程中, 丌斷仍當前頁面上抽取新的URL放入隊列;
  • 直到滿足系統給定的停止條件

(三)使用范圍

  • 作為搜索引擎的網頁搜集器,抓取整個互聯網,如谷歌,百度等;
  • 作為垂直搜索引擎,抓取特定主題信息,如視頻網站,招聘網站等。
  • 作為測試網站前端的檢測工具,用來評價網站前端代碼的健壯性

(四)爬蟲工作的過程

  • URL管理模塊:發起請求。一般是通過HTTP庫,對目標站點進行請求。等同于自己打開瀏覽器,輸入網址。
  • 下載模塊:獲取響應內容(response)。如果請求的內容存在于服務器上,那么服務器會返回請求的內容,一般為:HTML,二進制文件(視頻,音頻),文檔,Json字符串等。
  • 解析模塊:解析內容。對于用戶而言,就是尋找自己需要的信息。對于Python爬蟲而言,就是利用正則表達式或者其他庫提取目標信息。
  • 存儲模塊:保存數據。解析得到的數據可以多種形式,如文本,音頻,視頻保存在本地。

(五)爬蟲分類

1.通用網絡爬蟲

  • 通用網絡爬蟲又稱全網爬蟲(Scalable Web Crawler),
    爬行對象從·一些種子 URL 擴充到整個 Web,主要為門戶
    站點搜索引擎和大型 Web 服務提供商采集數據。
  • 通用網絡爬蟲根據預先設定的一個或若干初始種
    子URL開始,以此獲得初始網頁上的URL列表,在
    爬行過程中不斷從URL隊列中獲一個的URL,進而
    訪問并下載該頁面。

2.增量爬蟲

  • 增量式網絡爬蟲(Incremental Web Crawler)是 指 對 已 下 載 網 頁 采
    取增量式更新和只爬行新產生的或者已經發生發化網頁的爬蟲,它能夠在一
    定程度上保證所爬行的頁面是盡可能新的頁面。
  • 增量式爬蟲有兩個目標:保持本地頁面集中存儲的頁面為最新頁面和提高
    本地頁面集中頁面的質量。
  • 通用的商業搜索引擎如谷歌,百度等,本質上都屬亍增量爬蟲。

3.垂直爬蟲

  • 垂直爬蟲,又稱為聚焦網絡爬蟲(Focused Crawler),或主題網絡爬蟲(Topical Crawler) -
  • 是指選擇性地爬行那些不預先定義好癿主題相關頁
    面的·網絡爬蟲。如Email地址、電子書、商品價格等。
  • 爬行策略實現的關鍵是評價頁面內容和鏈接的重要
    性,不同的方法計算出的重要性不同,由此導致鏈
    接的訪問順序也丌同

4.Deep Web爬蟲

  • Deep Web 是那些大部分內容不能通過靜態鏈接獲取的、隱藏在搜索表單后的,叧有用戶提交一些關鍵詞才能獲得的 Web 頁面。
  • Deep Web 爬蟲爬行過程中最重要部分就是表單填寫,包含兩種類型:
    ? 1) 基亍領域知識的表單填寫
    ? 2) 基亍網頁結構分析的表單填寫

二、爬取南陽理工學院ACM題目網站 http://www.51mxd.cn/ 練習題目數據

(一)新建.py文件

import requests# 導入網頁請求庫 from bs4 import BeautifulSoup# 導入網頁解析庫 import csv from tqdm import tqdm# 模擬瀏覽器訪問 Headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'# 表頭 csvHeaders = ['題號', '難度', '標題', '通過率', '通過數/總提交數']# 題目數據 subjects = []# 爬取題目 print('題目信息爬取中:\n') for pages in tqdm(range(1, 11 + 1)):# 傳入URLr = requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm', Headers)r.raise_for_status()r.encoding = 'utf-8'# 解析URLsoup = BeautifulSoup(r.text, 'html5lib')#查找爬取與td相關所有內容td = soup.find_all('td')subject = []for t in td:if t.string is not None:subject.append(t.string)if len(subject) == 5:subjects.append(subject)subject = []# 存放題目 with open('NYOJ_Subjects.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n題目信息爬取完成!!!')

(二)爬取結果

點擊運行后生成NYOJ_Subjects.csv文件,打開該文件

(三)代碼分析

1.運行環境Python3.8

2.本次調用了 requests網頁請求庫和Beautiful Soup網頁解析庫

import requests# 導入網頁請求庫 from bs4 import BeautifulSoup# 導入網頁解析庫




3.定義訪問瀏覽器所需的請求頭和寫入csv文件需要的表頭以及存放題目數據的列表

# 模擬瀏覽器訪問# 模擬瀏覽器訪問 Headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'# 表頭 csvHeaders = ['題號', '難度', '標題', '通過率', '通過數/總提交數']#表頭列表# 題目數據 subjects = []#定義列表存放數據

4.根據表頭csvHeaders中內容爬取信息,并在進度條中顯示進度

# 爬取題目 print('題目信息爬取中:\n') for pages in tqdm(range(1, 11 + 1)):#一頁一頁地爬取信息# 傳入URLr = requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm', Headers)r.raise_for_status()r.encoding = 'utf-8'#輸出文檔為utf-8編碼# 解析URLsoup = BeautifulSoup(r.text, 'html5lib')#查找爬取與csvHeaders表頭中相關所有內容td = soup.find_all('td')subject = []#新定義一個subject用來存放當前頁面爬取的滿足特征的信息for t in td:if t.string is not None:subject.append(t.string)if len(subject) == 5:#通過長度判斷subject內容是否爬取到上面5項subjects.append(subject)#把subject存放進上面的subjects中subject = []#subject置空

5.把爬取內容存放文件NYOJ_Subjects.csv中

# 存放題目 with open('NYOJ_Subjects.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n題目信息爬取完成!!!')

三、爬取重慶交通大學新聞網站中近幾年所有的信息通知(http://news.cqjtu.edu.cn/xxtz.htm) 的發布日期和標題全部爬取

(一)確定爬取信息的位置

1.進入網站http://news.cqjtu.edu.cn/xxtz.htm

2.鼠標空白處點擊后選擇檢查N
3.可以觀察到需要爬取時間和標題所在位置

(二)代碼實現

# -*- coding: utf-8 -*- """ Created on Wed Nov 17 14:39:03 2021@author: 86199 """ import requests from bs4 import BeautifulSoup import csv from tqdm import tqdm import urllib.request, urllib.error # 制定URL 獲取網頁數據# 所有新聞 subjects = []# 模擬瀏覽器訪問 Headers = { # 模擬瀏覽器頭部信息"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53" }# 表頭 csvHeaders = ['時間', '標題']print('信息爬取中:\n') for pages in tqdm(range(1, 65 + 1)):# 發出請求request = urllib.request.Request(f'http://news.cqjtu.edu.cn/xxtz/{pages}.htm', headers=Headers)html = ""# 如果請求成功則獲取網頁內容try:response = urllib.request.urlopen(request)html = response.read().decode("utf-8")except urllib.error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)# 解析網頁soup = BeautifulSoup(html, 'html5lib')# 存放一條新聞subject = []# 查找所有li標簽li = soup.find_all('li')for l in li:# 查找滿足條件的div標簽if l.find_all('div',class_="time") is not None and l.find_all('div',class_="right-title") is not None:# 時間for time in l.find_all('div',class_="time"):subject.append(time.string)# 標題for title in l.find_all('div',class_="right-title"):for t in title.find_all('a',target="_blank"):subject.append(t.string)if subject:print(subject)subjects.append(subject)subject = []# 保存數據 with open('test.csv', 'w', newline='',encoding='utf-8') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n信息爬取完成!!!')

(三)運行結果

打開生成的test.csv文件如下

四、總結

網絡爬蟲需要一定的Web基礎,需要分析所要獲取的內容信息的存放位置后設置條件進行爬蟲。Python中通過調用庫來進行爬蟲獲取信息比較簡單方便。

五、參考資料

基礎篇-爬蟲基本原理
爬蟲-Python編程入門
基于python爬取重慶交通大學新聞網內容

總結

以上是生活随笔為你收集整理的网络爬虫入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。