會 python 的一定會爬蟲嗎,來看看

2021-09-27 11:53:14 字數 3337 閱讀 1533

注:python 爬蟲當然要安裝 python,如何安裝參見:python 的安裝使用和基本語法

網路爬蟲就是用**模擬人類去訪問**以獲取我們想要資訊。由於**模擬的速度和效率很高,所以可以批量和動態獲取我們想要的資訊。比如搶票軟體就是一直用**訪問12306**獲取餘票資訊,一有餘票立馬使用**進行模擬購買。

通用網路爬蟲。又稱全網爬蟲,爬行物件從一些種子url擴充至整個web,主要為門戶站點、搜尋引擎和大型web服務提供商採集資料。

聚焦網路爬蟲。是指有選擇性的爬行哪些與預定主題相關頁面的網路爬蟲。

url管理器:放置重複抓取和迴圈抓取。

網頁解析器:用於提取網頁中自己想要的資料,爬蟲的另乙個核心部分。

輸出管理器:用於儲存資訊,將資料輸出到檔案或資料庫。

import requests				//匯入requests包

#這個包需要提前安裝,在cmd 裡面進入 python 安裝路徑的 scripts 目錄輸入 pip install lxml 進行安裝

from lxml import etree //匯入etree包

url = ""

r = requests.get(url,headers=headers);

r.encoding = 'utf-8'

selector = etree.html(r.text)

news_text = selector.xpath('//*[@id="u1"]/a[1]/text()')[0]

news_url = selector.xpath('//*[@id="u1"]/a[1]/@href')[0]

print(news_url)

print(news_text)

說明如下

行數說明

第1行匯入requests包,用於使用get訪問命令

第2行匯入etree包,用於使用xpath命令以找到自己想要的元素

第4行設定我們想要訪問的url

第5行設定訪問頭部資訊headers,用於模擬瀏覽器訪問

第7行執行訪問,並將獲取的資料剛到r物件中

第8行將r物件的編碼方式設定為utf-8

第9行用etree解析r物件資料並放到selector中

第11行

獲取從根目錄下找到id='u1』屬性下的a標籤的text內容

第12行

獲取從根目錄下找到id='u1』屬性下的a標籤的href內容

第13行

輸出第11行獲取的資料

第14行

輸出第13行獲取的資料

結果如下

新聞

在html頁面上右鍵、檢查即可定位到html**相應位置。

同時,在**上右鍵、copy、copy xpath即可複製xpath位址。

初始化html原始碼

xpath即為xml路徑語言,它是一種用於確定xml文件中某部分位置的語言。

如在**中使用此功能需要匯入lxml中的etree包

from lxml import etree
然後使用html原始碼初始化etree,並賦值給乙個物件以儲存

selector = etree.html(r.text)
這樣我們就得到了乙個名字叫做selector的element物件,這時我們可以對這個element物件進行xpath篩選,系統會返回乙個篩選的結果列表。

使用標籤順序定位

比如我們要查詢第乙個div下的第二個ul下的a標籤

all_a = selector.xpath('//div[1]/ul[2]/a')
//表示從根節點開始查詢,然後找到第二個ul下的所有a標籤。

==注意:==這裡的數字是從1開始的,而不是從0開始的。

用屬性定位

而同時,我們也可以通過屬性查詢元素。

li_good = selector.xpath('//ul/li[@[class="good"]')
上述**可以找到ul下所有class屬性為good的li標籤。

用唯一屬性全域性定位

當然,如果class屬性唯一,也可以直接中根目錄開始查詢。

li_good = selector.xpath('//*[@[class="good"]')
上述**的意思是:從根目錄下開始查詢class屬性為good的所有標籤。*代表任意的標籤。

提取屬性值

li_good_text = selector.xpath('//*[@[class="good"]/a/@href')
這裡通過@href語法形式提取到了a標籤的屬性值。

import requests

response = requests.get(「

這裡可以通過

response.encoding

來檢視返回值response的編碼

通過

response.encoding = 「utf-8」

來修改返回值response的編碼

還可以通過

response.headers

來檢視返回值response的頭部

而請求頭部則可以通過

response.request.headers

來檢視

列表如下:

**說明

response.encoding

檢視返回值的編碼

response.encoding = 「utf-8」

修改返回值的編碼

response.headers

檢視返回頭部

response.request.headers

檢視請求頭部

response.status_code

檢視返回狀態碼

response.history

檢視重定向

payloag =

r = requests.get(url,headers=headers,params=payload)

分母為0一定會拋異常嗎?

現象描述 最近做了乙個需求,用到了 預算 時間視窗數,其中預算是double型別,時間視窗數是int型別,其中時間視窗數我計算的有問題,會出現為0的情況 實際最小值應該為1 然後就出現了 乙個double型別的數除以0的情況,分母為0,是不是要報 j a.lang.arithmeticexcepti...

入行IT,一定要會Linux嗎?

目錄 為什麼要學linux linux是什麼 linux的出現 linux的基本思想 linux的特性 linux受歡迎的原因 現在是21世紀,是科學技術大力發展的乙個時代,it行業已經成為現在的乙個非常熱門的乙個行業,許許多多的人都想要往it方面發展,找it方面相關的乙個工作。很多想要接觸it行業...

InnoDB一定會在索引中加上主鍵嗎

我之前看 記得是如果索引末尾就是主鍵,那麼innodb就不再新增主鍵了,如果索引末尾不是主鍵,那麼會新增主鍵,但是這跟測試結果不符 create table t a char 32 notnull primary key,b char 32 notnull key idx1 a,b key idx2...