python爬蟲筆記 持續更新

2021-08-15 02:14:38 字數 2466 閱讀 8129

爬蟲主要分為兩個部分,第乙個是網頁介面的獲取,第二個是網頁介面的解析;爬蟲的原理是利用**模擬瀏覽器訪問**,與瀏覽器不同的是,爬蟲獲取到的是網頁的源**,沒有了瀏覽器的翻譯效果。

這裡我們使用urllib2進行**頁面的獲取;首先匯入urllib2模組包

import urllib2 

呼叫urllib2中的urlopen方法鏈結**,**如下repr=urllib2.urlopen("******"),******代表的是**名稱。 

repr = urllib2.urlopen("")

得到**的響應之後,然後就是將頁面的源**讀取出來,呼叫read方法

html=repr.read()

將自己想要的資料從html介面源**中解析出來,解析介面的模組包有很多,原始的re

import re

進行利用re進行搜尋,這裡我有使用正規表示式

url = re.search(r'

print url

url管理器:用來管理將要抓取的url和已經抓取過的

-防止重複抓取,防止迴圈抓取

-新增新的url到待爬取集合中,判斷待新增url是否在容器中

-判斷是否有待爬取url,獲取待爬取url,將url從待爬取移動到已爬取

--儲存1-記憶體中包含待爬取url集合set()和已爬取url集合set(),可自動去重

--儲存2-關係型資料庫中mysql中包含表urls(url,is_crawled)

--儲存3-快取資料庫中redis包含待爬取url集合set和已爬取的url集合set

--urllib2 為python官方基礎模組

--requests 為第三方包更強大

例項1:import urllib2  --匯入包

response = urllib2.urlopen("www.baidu.com")  --請求

print response.getcode() --獲取狀態碼,如果是200代表成功

response.read()

例項2:import urllib2  --匯入包

request = urllib2.request(url)  --建立request物件

request.add_data('a',1)  --新增資料

request.add_header('user-agent','mozilla/5.0')--新增header,偽裝成mozilla瀏覽器

response = urllib2.urlopen(request)傳送請求獲取結果

特殊情景

1-需要登陸的**則用 httpcookieprocessor

2-需要**的**則用 proxyhandler 

3-需要https協議登陸**則用httpshandler

4-需要自動跳轉**則用httpredirecthandler

先呼叫opener = urllib2.build_opener(1/2/3/4)

urllib2.install_opener(opener)

import urllib2, cookielib

cj = cookielib.cookiejar() --建立cookie容器

opener = urllib2.build_opener(urllib2.httpcookieprocessor(cj))--建立opener

urllib2.install_opener(opener) --安裝opener

response = urllib2.urlopen("/")傳送請求獲取結果

網頁解析器:beautifulsoup

--從網頁中提取有價值資料的工具,包括資料和新的url

1-正規表示式  模糊匹配

2-官方 html.parser 結構化解析

3-第三方 beautifulsoup  強大結構化解析,包括2/3/4 功能

4-第三方 lxml 結構化解析

beautifulsoup語法

建立beautifulsoup物件--》搜尋節點find_all,find--》訪問節點名稱,屬性,文字

爬蟲:一段自動抓取網際網路資訊的程式

從乙個url出發,自動提取關聯url的程式

價值:網際網路資料,為我所用,分析爬取的資料

目標位址  

links = soup.find_all('a', href=re.compile(r"/item/(.*)"))

使用的python3.5,在window下,我在除錯的時候遇到裡編碼出錯的問題,找了很久,終於解決裡。這此分享出來,給可能遇到同樣問題的同學。 當把抓取出來的內容顯示在網頁上時,這個地方是出錯的關鍵點。在windows下面,新檔案的預設編碼是gbk,這樣的話,python直譯器會用gbk編碼去解析我們的網路資料流txt,然而txt此時已經是decode過的unicode編碼,這樣的話就會導致解析不了,出現問題。應寫為: fout = open('output.html','w',encoding='utf-8') 同時在html中宣告

Python爬蟲學習 持續更新

當伺服器通過request的header中的使用者資訊防止爬取時,修改header改為乙個瀏覽器就好 import requests from bs4 import beautifulsoup kv r requests.get headers kv print r.encoding soup be...

python爬蟲scrapy(持續更新)

pip install scrapy scrapy startproject stock 建立資料夾 scrapy genspider stock xx 網域名稱 建立爬蟲py檔案 scrapy crawl stock o json spider中必須包含stock.py檔案 scrapy craw...

Python 爬蟲 坑 持續更新中

記錄下學習爬蟲中遇到的坑 python2要支援中文需要在頭部新增 coding utf 8 python3直接支援中文 python2中直接可以呼叫urllib2 python3中需要 from urllib import requestpython2中直接可以獲取response的文字 pytho...