用python寫爬蟲簡單嗎
所謂網(wǎng)絡(luò)爬蟲,通俗的講,就是通過向我們需要的URL發(fā)出http請求,獲取該URL對應(yīng)的http報文主體內(nèi)容,之后提取該報文主體中我們所需要的信息。
下面是一個簡單的爬蟲程序
http基本知識
當(dāng)我們通過瀏覽器訪問指定的URL時,需要遵守http協(xié)議。本節(jié)將介紹一些關(guān)于http的基礎(chǔ)知識。
http基本流程
我們打開一個網(wǎng)頁的過程,就是一次http請求的過程。這個過程中,我們自己的主機充當(dāng)著客戶機的作用,而充當(dāng)客戶端的是瀏覽器。我們輸入的URL對應(yīng)著網(wǎng)絡(luò)中某臺服務(wù)器上面的資源,服務(wù)器接收到客戶端發(fā)出的http請求之后,會給客戶端一個響應(yīng),響應(yīng)的內(nèi)容就是請求的URL對應(yīng)的內(nèi)容,當(dāng)客戶端接收到服務(wù)器的響應(yīng)時,我們就可以在瀏覽器上看見請求的信息了。
我們可以通過python的requests模塊很方便的發(fā)起http請求。requests模塊是第三方模塊,安裝完成之后直接import就能使用。下面介紹一些簡單的用法
發(fā)起請求
import requests
# 請求的首部信息
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/65.0.3325.146 Safari/537.36'
}
# 例子的url
url = 'https://voice.hupu.com/nba' # 虎撲nba新聞
# 利用requests對象的get方法,對指定的url發(fā)起請求
# 該方法會返回一個Response對象
res = requests.get(url, headers=headers)
# 通過Response對象的text方法獲取網(wǎng)頁的文本信息
print(res.text)
上面的代碼中,我們向虎撲的服務(wù)器發(fā)送了一個get請求,獲取虎撲首頁的nba新聞。headers參數(shù)指的是http請求的首部信息,我們請求的url對應(yīng)的資源是虎撲nba新聞的首頁。獲取到對應(yīng)的網(wǎng)頁資源之后,我們需要對其中的信息進行提取。
通過BeautifulSoup提取網(wǎng)頁信息
BeautifulSoup庫提供了很多解析html的方法,可以幫助我們很方便地提取我們需要的內(nèi)容。我們這里說的BeautifulSoup指的是bs4。當(dāng)我們成功抓取網(wǎng)頁之后,就可以通過BeautifulSoup對象對網(wǎng)頁內(nèi)容進行解析。在BeautifulSoup中,我們最常用的方法就是find()方法和find_all()方法,借助于這兩個方法,可以輕松地獲取到我們需要的標簽或者標簽組。關(guān)于其他的方法,可以參考bs4的官方文檔:BeautifulSoup
find()方法和find_all()方法的用法如下
find(name , attrs , recursive , string , **kwargs ) # find_all()方法將返回文檔中符合條件的所有tag, find_all(name , attrs , recursive , string , **kwargs )
from bs4 import BeautifulSoup
# BeautifulSoup對象接收html文檔字符串
# lxml是html解析器
soup = Beautiful(res.text, 'lxml')
# 下面的方法找出了所有class為hello的span標簽
# 并將所有的結(jié)果都放入一個list返回
tags = soup.find_all('span', {'class': 'hello'})
實例擴展:
實例一:
#第一種方法
import urllib2 #將urllib2庫引用進來
response=urllib2.urlopen("http://www.baidu.com") #調(diào)用庫中的方法,將請求回應(yīng)封裝到response對象中
html=response.read() #調(diào)用response對象的read()方法,將回應(yīng)字符串賦給hhtml變量
print html #打印出來
實例二:
#第二中方法
import urllib2
req=urllib2.Request("http://ww.baidu.com")
response=urllib2.urlopen(req)
html = response.read()
print html
到此這篇關(guān)于用python寫爬蟲簡單嗎的文章就介紹到這了,更多相關(guān)python寫爬蟲難嗎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
flask實現(xiàn)python方法轉(zhuǎn)換服務(wù)的方法
flask是一個web框架,可以通過提供的裝飾器@server.route()將普通函數(shù)轉(zhuǎn)換為服務(wù),這篇文章主要介紹了flask實現(xiàn)python方法轉(zhuǎn)換服務(wù),需要的朋友可以參考下2022-05-05
關(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)
下面小編就為大家?guī)硪黄P(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
用Q-learning算法實現(xiàn)自動走迷宮機器人的方法示例
這篇文章主要介紹了用Q-learning算法實現(xiàn)自動走迷宮機器人的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
python實現(xiàn)定時自動備份文件到其他主機的實例代碼
這篇文章主要介紹了python實現(xiàn)定時自動備份文件到其他主機的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-02-02

