導航:首頁 > 源碼編譯 > python爬取網頁源碼

python爬取網頁源碼

發布時間:2023-08-21 03:48:06

python3 怎麼爬取新聞網站

需求:

從門戶網站爬取新聞,將新聞標題,作者,時間,內容保存到本地txt中。

用到的python模塊:

importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題

其中bs4需要自己裝一下,安裝方法可以參考:Windows命令行下pip安裝python whl包

程序:

#coding=utf-8
importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題

reload(sys)#2
sys.setdefaultencoding('utf-8')#3

#從首頁獲取所有鏈接
defGetAllUrl(home):
html=urllib2.urlopen(home).read().decode('utf8')
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'
links=soup.find_all('a',href=re.compile(pattern))
forlinkinlinks:
url_set.add(link['href'])

defGetNews(url):
globalNewsCount,MaxNewsCount#全局記錄新聞數量
whilelen(url_set)!=0:
try:
#獲取鏈接
url=url_set.pop()
url_old.add(url)

#獲取代碼
html=urllib2.urlopen(url).read().decode('utf8')

#解析
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'#鏈接匹配規則
links=soup.find_all('a',href=re.compile(pattern))

#獲取URL
forlinkinlinks:
iflink['href']notinurl_old:
url_set.add(link['href'])

#獲取信息
article=News.News()
article.url=url#URL信息
page=soup.find('div',{'id':'page'})
article.title=page.find('h1').get_text()#標題信息
info=page.find('div',{'class':'article-info'})
article.author=info.find('a',{'class':'name'}).get_text()#作者信息
article.date=info.find('span',{'class':'time'}).get_text()#日期信息
article.about=page.find('blockquote').get_text()
pnode=page.find('div',{'class':'article-detail'}).find_all('p')
article.content=''
fornodeinpnode:#獲取文章段落
article.content+=node.get_text()+' '#追加段落信息

SaveNews(article)

printNewsCount
break
exceptExceptionase:
print(e)
continue
else:
print(article.title)
NewsCount+=1
finally:
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break

defSaveNews(Object):
file.write("【"+Object.title+"】"+" ")
file.write(Object.author+" "+Object.date+" ")
file.write(Object.content+" "+" ")

url_set=set()#url集合
url_old=set()#爬過的url集合

NewsCount=0
MaxNewsCount=3

home='http://jia..com/'#起始位置

GetAllUrl(home)

file=codecs.open("D:\test.txt","a+")#文件操作

forurlinurl_set:
GetNews(url)
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break

file.close()

新聞文章結構

#coding:utf-8
#文章類定義
classNews(object):
def__init__(self):
self.url=None
self.title=None
self.author=None
self.date=None
self.about=None
self.content=None

對爬取的文章數量就行統計。

② 如何用python爬取網站數據

這里簡單介紹一下吧,以抓取網站靜態、動態2種數據為慧返拍例,實驗環境win10+python3.6+pycharm5.0,主要內容如下:

抓取網站靜態數據(數據在網頁源碼中):以糗事網路網站數據為例

1.這里假設我們抓取的數據如下,主要包括用戶昵稱、內容、好笑數和評論數這4個欄位,如下:

對應的網頁源碼如下,包含我們所需要的數據:

2.對應網頁結構,主要代碼如下,很簡單,主要用到requests+BeautifulSoup,其中requests用於請求頁面,BeautifulSoup用於解析頁面:

程序運行截圖如下,已經成功爬取到數據:

抓取網站動態數據(數據不在網頁源碼中,json等文件中):以人人貸網站數據為例

1.這里假設我們爬取的是債券數據,主要包括年利率世型、借款標題、期限、金額和進度這5個欄位信息,截圖如下:

打開網頁源碼中,可以發現數據不在網頁源碼中,按F12抓包分析時,才發現在一個json文件中,如下:

2.獲取到json文件的url後,我們就可以爬取對應數據了,這里使用的包與上面類似,因為是json文件,所以還用了json這個包(解析json),主要內容如下:

程序運行截圖如下,前羨已經成功抓取到數據:

至此,這里就介紹完了這2種數據的抓取,包括靜態數據和動態數據。總的來說,這2個示例不難,都是入門級別的爬蟲,網頁結構也比較簡單,最重要的還是要會進行抓包分析,對頁面進行分析提取,後期熟悉後,可以藉助scrapy這個框架進行數據的爬取,可以更方便一些,效率更高,當然,如果爬取的頁面比較復雜,像驗證碼、加密等,這時候就需要認真分析了,網上也有一些教程可供參考,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

③ 如何利用Python抓取靜態網站及其內部資源

這個非常閉冊塌簡單,requests+BeautifulSoup組合就可以輕松實現,下轎圓面我簡單介紹一下,感興趣的朋友可以自己嘗試一下,這里以爬取糗事網路網站數據(靜態網站)為例:

1.首先,安裝requets模塊,這個直接在cmd窗口輸入命令「pipinstallrequests」就行,如下:

2.接著安裝bs4模塊,這個模塊包含了BeautifulSoup,安裝的話,和requests一樣,直接輸入安裝命令「pipinstallbs4」即可,如下:

3.最後就是requests+BeautifulSoup組合爬取糗事網路,requests用於請求頁面,BeautifulSoup用於解析頁面,提取數據,主要步驟及截圖如下:

這里假設爬取的數據包含如下幾個欄位,包括用戶昵稱、內容、好笑數和評論數:

接著打開對應網頁源碼,就可以直接看到欄位信息,內容如下,嵌套在各個標簽中,後面就是解析這些標簽提取數據:

基於上面網頁內容,測試代碼如下,非常簡單,直接find對應標簽,提取文本內容即可:

程序運行截圖如下,已經成功抓取到網站數據:

至此,我們就完成了使用python來爬去靜態網站。總的來說,整個過程非常簡單,也是最基本的爬蟲內容,只要你有一定的python基礎,熟悉一下上面的示例,很快就能掌握的,當然,你也可以使用urllib,正則表達式匹配等,都行,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以姿段搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

④ 如何用python爬取網頁中隱藏的div內容

你說的隱藏的div內容,應該是動態載入的數據吧,不在網頁源碼中顯示,只在載入網頁時才請求數據進行顯示,一般情況下,這種數據都保存在一個json文件中,只要抓包分析出這個json文件的url地址,然後再根據json文件結構進行解析,很快就能獲取到動態載入的div數據,下面我以爬取人人貸上面的散標數據為例,簡單介紹一下python如何爬蘆枝取div動態載入的數據,實驗環境win10+python3.6+pycharm5.0,主要步驟如下:

1.首先,打開散標數族咐據,如下,爬取的信息主要包括年利率、借款標題、期限、金額和進度這5個欄位信息:

右鍵對應元素進行檢查,可以看出所有的數據嵌套在div標簽中,如下:

打開網頁源碼,我們按Ctrl+F查找對應的數據,會發現所查找的數據都未在網頁源碼中,如下,即數據都是動態載入,所以直接解析原網頁是找不到div嵌套的數據的:

2.接著,我們按F12調出開發者工具,依次點擊「Network」->「XHR」,F5刷新頁面,就會看到動態載入的json文件,查看這個文件,內容如下,左邊為json文件的url地址,右邊就是我們需要爬取的div數據:

3.最後對應上面的json文件,我們就可以直接獲取並解析json了,這里主要用到requests和json這2個模塊,其中requests用於根據url地址獲取json文件,json用於解析json文件,提取出我們所需要的信息,即div動態載入的數據,測試代碼如下,非常簡單:

運行程序,截圖如下,已經成功爬取到div載入的數據:

至此,我們就完成了利用python爬取div動態載入的數據。總的來說,整個過程非常簡單,最主要的陪穗敏還是抓包分析,只要你有一定的爬蟲基礎,熟悉一下上面的代碼,多調試幾遍程序,很快就能掌握的,當然,你也可以使用selenium進行爬取,直接解析就行,網上也有相關教程和資料可供參考,非常豐富,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。

閱讀全文

與python爬取網頁源碼相關的資料

熱點內容
伺服器上如何查看伺服器的埠 瀏覽:676
單片機伺服器編譯 瀏覽:768
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:954
在word中壓縮圖片大小 瀏覽:253
javatomcat圖片 瀏覽:417
程序員生產智能創意 瀏覽:65
匯和銀行app怎麼登錄 瀏覽:381
騰訊伺服器如何上傳源碼 瀏覽:745
單片機的原理概述 瀏覽:508
火控pdf 瀏覽:267
如何復制雲伺服器centos環境 瀏覽:984
債權pdf 瀏覽:303
紅色番字的app怎麼下載 瀏覽:876
雲伺服器流程教課 瀏覽:702
中國農業銀行app怎麼沒有網 瀏覽:997
幾率表演算法 瀏覽:902
程序員理工科 瀏覽:708
企業郵箱登錄收件伺服器地址 瀏覽:560
計算機思維與演算法設計的重要性 瀏覽:664