注: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...