新浪網 sina 新聞鏈結爬取

2021-08-21 18:36:45 字數 1412 閱讀 9243

一、新聞爬蟲需求分析

二、實現思路

三、專案**實現

1.首先解析網頁,檢視各條新聞儲存位置

2.通過正規表示式獲取新聞鏈結,依次爬取各新聞並儲存到本地

#正規表示式,寫出每條新聞對應的鏈結

# -*- coding: utf-8 -*-

import urllib.request

import re

data=urllib.request.urlopen("").read()

#讀取網頁內容

data2=data.decode("utf-8","ignore")

#有很多情況utf-8或者gbk會出現解碼失敗,更換不是解決辦法,加上ignore第二個引數可忽視基本可以永久性解決問題

pat='href="(">'

allurl=re.compile(pat).findall(data2)

#從data2中匹配出所有是特定**的**

for i in range(0,len(allurl)):#for迴圈進行遍歷

#異常處理,防止系統崩潰,不然程式遇到異常會終止自動結束

try:

print("第"+str(i)+"次爬取")

thisurl=allurl[i]

file="c:/users/administrator/desktop/urllib/sinanews"+str(i)+".html"

#儲存到本地檔案

urllib.request.urlretrieve(thisurl,file)

print("爬取成功")

except urllib.error.urlerror as e:

#if 語句 判斷是否有狀態碼

if hasattr(e,"code"):

print(e.code)

if hasattr(e,"reason"):

print(e.reason)

**採取了異常處理,增強了程式的健壯性,防止程式因爬取到某條新聞鏈結產生異常跳出系統,try....except,假設產生異常輸出提示語,自動進入下次迴圈.

爬取新浪網頁

唯一性的用id表示,id前面需要加 例如 使用select 找出所有id為title 的元素 alink soup.select title print alink print alink.text 有相同的用class表示,class前面需要加.例如 使用select 找出所有class為link...

獲取新浪網的鏈結資訊

sgmllib.py 包含乙個重要的類 sgmlparser。sgmlparser 將 html 分解成有用的片段,比如開始標記和結束標記。一旦它成功地分解出某個資料為乙個有用的片段,它會根據 所發現的資料,呼叫乙個自身內部的方法。為了使用這個分析器,您需要子類化 sgml parser類,並且覆蓋...

python爬取搜狐網的新聞

1 import requests 2from bs4 import beautifulsoup3 4 newsurl 5 用get方法進行網頁獲取 6 res requests.get newsurl 7 用utf 8的編碼方式 8 res.encoding utf 8 9 獲取網頁的內容,並用h...