導航:首頁 > 編程語言 > python爬蟲項目提取器

python爬蟲項目提取器

發布時間:2024-01-07 10:49:49

『壹』 如何用python做爬蟲

在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。

我們最常規的做法就是通過滑鼠右鍵,選擇另存為。但有些圖片滑鼠右鍵的時候並沒有另存為選項,還有辦法就通過就是通過截圖工具截取下來,但這樣就降低圖片的清晰度。好吧其實你很厲害的,右鍵查看頁面源代碼。

我們可以通過python來實現這樣一個簡單的爬蟲功能,把我們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能。

『貳』 python爬蟲必知必會的幾個工具包

爬蟲是學習python有趣途徑,同樣有強大的框架
python自帶的urllib其實使用起來有點麻煩,推薦你使用requests庫,這是一個非常強大,使用方便的庫,而且有全面的中文文檔,網上爬數據爬圖片都不在話下。
還有更高級的庫-scrapy庫。
Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 其可以應用在數據挖掘,信息處理或存儲歷史數據等一系列的程序中。Scrapy 使用了 Twisted非同步網路庫來處理網路通訊。爬取網站數據,當然少不了正則模塊re,還有beautiful soup模塊
re模塊具有強大的處理字元串的能力,但是使用起來並不簡單,因為當你覺得可以使用正則表達式的時候,這本身就是一個問題,因為寫出一個正則表達式就是一個大問題。不過不用怕,在處理網站結構的數據時,有更強大的庫-beautiful soup
Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫,擁有完善的中文文檔,提供了種類繁多的屬性和方法供你選擇,讓你解析網站數據更加的得心應手!
web後端框架django,flask
python在web開發方面也是多面手,既有大而全的框架django,又有小而精的框架flask。
雖說在web開發方面有許多框架,但是最常用的還是這兩種,如果你想做中方面的工作,學好這兩個框架就夠用了,而且,目前的python後端開發的招聘需求多半是要求會這兩個框架。

『叄』 如何用python寫爬蟲來獲取網頁中所有的文章以及關鍵詞

所謂網頁抓取,就是把URL地址中指定的網路資源從網路流中讀取出來,保存到本地。
類似於使用程序模擬IE瀏覽器的功能,把URL作為HTTP請求的內容發送到伺服器端, 然後讀取伺服器端的響應資源。

在Python中,我們使用urllib2這個組件來抓取網頁。
urllib2是Python的一個獲取URLs(Uniform Resource Locators)的組件。

它以urlopen函數的形式提供了一個非常簡單的介面。

最簡單的urllib2的應用代碼只需要四行。

我們新建一個文件urllib2_test01.py來感受一下urllib2的作用:

import urllib2
response = urllib2.urlopen('http://www..com/')
html = response.read()
print html

按下F5可以看到運行的結果:

我們可以打開網路主頁,右擊,選擇查看源代碼(火狐OR谷歌瀏覽器均可),會發現也是完全一樣的內容。

也就是說,上面這四行代碼將我們訪問網路時瀏覽器收到的代碼們全部列印了出來。

這就是一個最簡單的urllib2的例子。

除了"http:",URL同樣可以使用"ftp:","file:"等等來替代。

HTTP是基於請求和應答機制的:

客戶端提出請求,服務端提供應答。

urllib2用一個Request對象來映射你提出的HTTP請求。

在它最簡單的使用形式中你將用你要請求的地址創建一個Request對象,

通過調用urlopen並傳入Request對象,將返回一個相關請求response對象,

這個應答對象如同一個文件對象,所以你可以在Response中調用.read()。

我們新建一個文件urllib2_test02.py來感受一下:

import urllib2
req = urllib2.Request('http://www..com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

可以看到輸出的內容和test01是一樣的。

urllib2使用相同的介面處理所有的URL頭。例如你可以像下面那樣創建一個ftp請求。

req = urllib2.Request('ftp://example.com/')

在HTTP請求時,允許你做額外的兩件事。

1.發送data表單數據

這個內容相信做過Web端的都不會陌生,

有時候你希望發送一些數據到URL(通常URL與CGI[通用網關介面]腳本,或其他WEB應用程序掛接)。

在HTTP中,這個經常使用熟知的POST請求發送。

這個通常在你提交一個HTML表單時由你的瀏覽器來做。

並不是所有的POSTs都來源於表單,你能夠使用POST提交任意的數據到你自己的程序。

一般的HTML表單,data需要編碼成標准形式。然後做為data參數傳到Request對象。

編碼工作使用urllib的函數而非urllib2。

我們新建一個文件urllib2_test03.py來感受一下:

import urllib
import urllib2
url = 'http://www.someserver.com/register.cgi'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
data = urllib.urlencode(values) # 編碼工作
req = urllib2.Request(url, data) # 發送請求同時傳data表單
response = urllib2.urlopen(req) #接受反饋的信息
the_page = response.read() #讀取反饋的內容

如果沒有傳送data參數,urllib2使用GET方式的請求。

GET和POST請求的不同之處是POST請求通常有"副作用",

它們會由於某種途徑改變系統狀態(例如提交成堆垃圾到你的門口)。

Data同樣可以通過在Get請求的URL本身上面編碼來傳送。

import urllib2
import urllib
data = {}
data['name'] = 'WHY'
data['location'] = 'SDU'
data['language'] = 'Python'
url_values = urllib.urlencode(data)
print url_values
name=Somebody+Here&language=Python&location=Northampton
url = 'http://www.example.com/example.cgi'
full_url = url + '?' + url_values
data = urllib2.open(full_url)

這樣就實現了Data數據的Get傳送。

2.設置Headers到http請求

有一些站點不喜歡被程序(非人為訪問)訪問,或者發送不同版本的內容到不同的瀏覽器。

默認的urllib2把自己作為「Python-urllib/x.y」(x和y是Python主版本和次版本號,例如Python-urllib/2.7),

這個身份可能會讓站點迷惑,或者乾脆不工作。

瀏覽器確認自己身份是通過User-Agent頭,當你創建了一個請求對象,你可以給他一個包含頭數據的字典。

下面的例子發送跟上面一樣的內容,但把自身模擬成Internet Explorer。

(多謝大家的提醒,現在這個Demo已經不可用了,不過原理還是那樣的)。

import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

以上就是python利用urllib2通過指定的URL抓取網頁內容的全部內容,非常簡單吧,希望對大家能有所幫助。

『肆』 python爬蟲怎麼做

大到各類搜索引擎,小到日常數據採集,都離不開網路爬蟲。爬蟲的基本原理很簡單,遍歷網路中網頁,抓取感興趣的數據內容。這篇文章會從零開始介紹如何編寫一個網路爬蟲抓取數據做告宏,然後會一步步逐漸完善爬蟲的抓取功能。

工具安裝

我們需要安裝python,python的requests和BeautifulSoup庫。我們用Requests庫用抓取網頁的內容,使用BeautifulSoup庫來從網頁中提取數據。

安裝python

運行pipinstallrequests

運行pipinstallBeautifulSoup

抓取網頁

完成必要工具安裝後,我們正式開始編寫我們的爬蟲。我們的第一個任務是要抓取所有豆瓣上的圖書信息。我們以/subject/26986954/為例,首先看看開如何抓取網頁的內容。

使用python的requests提供的get()方法我們可以非常簡單的獲取的指定網頁的內純冊容,代碼如下:

提取內容

抓取到網頁的內容後,我們要做的就是提取出我們想要的內容。在我們的第一個例子中,我們只需要提取書名。首先我們導入BeautifulSoup庫,使用BeautifulSoup我們可以非常簡單的提取網頁的特定內容。

連續抓取網頁

到目前為止,我們已經可以抓取單個網頁的內容了,現在讓我們看看如何抓取整個網站的內容。我們知道網頁之間是通過超鏈接互相連接在一起的,通過鏈接我們可以訪問整個網路。所以我們可以從每個頁面提取出包含指向其它網頁的鏈接,然後重復的對新鏈接進行抓取。

通過以上幾步我們就可以寫出一個最原始的爬蟲。在理解了爬蟲原理的基礎上,我們可以進一步對爬蟲進行完善。

寫過一個系列關於爬蟲的文章:/i6567289381185389064/。感興趣的可以前往查看。

Python基本環境的搭建,爬蟲的基本原理以及爬蟲的原型

Python爬蟲入門(第1部分)

如何使用BeautifulSoup對網頁內容進行提取

Python爬蟲入門(第2部分)

爬蟲運行時數據的存儲數據,以SQLite和MySQL作為示例

Python爬蟲入門(第3部分)

使用seleniumwebdriver對動態網頁進行抓取

Python爬蟲入門(第4部分)

討論了如何處理網站的反爬蟲策略

Python爬友如蟲入門(第5部分)

對Python的Scrapy爬蟲框架做了介紹,並簡單的演示了如何在Scrapy下進行開發

Python爬蟲入門(第6部分)

『伍』 4.python爬蟲之新建 scrapy 爬蟲項目(抓取和保存)

1.win10 下 win + r 打開cmd 切換新項目的目錄
2.新建scrapy項目的命令:

可以利用pycharm 打開項目文件夾編輯項目
3.items.py
聲明爬取的欄位

4.新建scrapy 爬蟲

用命令 scrapy genspider doubanmovie "movie.douban.com" 創建爬蟲。

5.運行爬蟲

5.1 創建運行腳本
(一)、在 scrapy.cfg 同級目錄下創建 pycharm 調試腳本 run.py,避免每次運行爬蟲輸入密碼,內容如下:

6.修改robottxt協議
修改 settings 中的 ROBOTSTXT_OBEY = True 參數為 False,因為默認為 True,就是要遵守 robots.txt 的規則, robots.txt 是遵循 Robot協議 的一個文件,它保存在網站的伺服器中,它的作用是,告訴搜索引擎爬蟲,本網站哪些目錄下的網頁不希望你進行爬取收錄。在 Scrapy 啟動後,會在第一時間訪問網站的 robots.txt 文件,然後決定該網站的爬取范圍。查看 robots.txt 可以直接網址後接 robots.txt 即可。

一般構建爬蟲系統,建議自己編寫Item Pipeline,就可以在open(path)選擇自己的保存路徑
參考: # scrapy爬蟲事件以及數據保存為txt,json,mysql

7.1保存為json格式時出現亂碼的解決方式:
scrapy抓取豆瓣書籍保存json文件亂碼問題
中文默認是Unicode,如:

\u5317\u4eac\u5927\u5b66
在setting文件settings.py中設置:

就可以解決了
第二種解決辦法
或在cmd中傳入 -s FEED_EXPORT_ENCODING='utf-8'

參考: https://www.cnblogs.com/tinghai8/p/9700300.html

『陸』 Python 爬蟲爬坑路(二)——B站圖片,咸魚的正確 GET 姿勢

昨天在寫完 入門級爬蟲之後 ,馬上就迫不及待的著手開始寫 B站的圖片爬蟲了,真的很喜歡這個破站呢 (〜 ̄△ ̄)〜

這里不涉及到 Python 爬蟲的高級技巧,沒有使用框架,沒有考慮反爬機制,沒有使用非同步IO技術,因為這些,我都不會!

我們選定 B站的 動畫區 進行測試,打開後我們發現有好多好多圖....

但當我們使用 F12 查看這些圖片的時候,發現並沒有圖片的地址...

這就是目前大多網站使用的 Ajax 技術動態載入數據的鍋,可遇到這種情況這么辦呢?別急別急,我們知道這些圖片的地址一定是需要載入的,而目前常見WEB傳輸數據的基本就是方式 XML 和 Json (其實是我就知道這兩種...),那好我們去看看請求的 XML 和 Json 文件。

以下省略查找過程....

我們發現 B站的圖片地址是保存在 Json 裡面的,ok,我們保存好這個 json 地址:
https://api.bilibili.com/x/web-interface/dynamic/region?callback=jQuery172071087417824369_1505783866149&jsonp=jsonp&ps=15&rid=24&_=1505783866453

這個是 MAD·AMV 最新動態的 Json 文件,利用上面相同的方法,我們找到 3D區、短片·配音區、綜合區 以及 右邊排行部分 的相應 json 地址。

好在 Chrome 瀏覽器提供了一個 Preview 功能,自動幫我們整理好 數據,如下

這樣就很清晰啦,我們只需要一層層解析拿到 pic 即可。於是我們這樣寫:

我們利用 requests 內置的 json 解碼器,很不幸,報錯:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

它提示說:解碼 Json 數據的時候出了問題,可能是在 第一行 第一列,咦?好奇怪,剛才不是用瀏覽器看過結構了嗎,沒毛病啊,怎麼還在報錯:Σ(  ̄□ ̄||)

別急別急,我們先看看原始的 Json 數據長啥樣?用 瀏覽器打開上面的 json 鏈接就可以了。

(/TДT)/ 前面的那些字母是幹嘛的呀,為什麼還有括弧啊!

所以我們知道了 Json 解析錯誤 的原因啦:後面在處理的時候把前面的這部分刪掉就好啦,另外我們也發現了 archives 這個關鍵字,我們在上一張圖看見過的哦,有印象嗎?啊,你說沒有呀,沒關系,這里你只需要記著它是一個 List 的數據類型就好了呀!

為了防止被當作是 惡意訪問 從而被封 IP,這里我們選擇犧牲時間,取巧使用 sleep(x) ,讓其等待一段時間之後再發出請求。

你可能會問我,呀,你這個,根本沒有代理、沒有混淆IP防止反爬、也沒有模擬 Ajax 請求動態抓取雲雲~

那我可以很負責的告訴你,你!走錯地方了!你要找的技術貼出門右拐!( ̄へ ̄)

我們恰巧使用的是 B站的 Ajax 技術,只要哪個視頻有了最新評論(或者是一下其它的條件),就會使用 Ajax 將最新的數據取出來。就像下面這樣:

所以可能在訪問人數多的時候,更新越快,越有可能獲得更多不同的圖片啦!

之後你就可以在吃飯的時候,把它掛起,然後吃飯回來就會發現有好多好多的圖片!(=・ω・=)

之後會陸續的更新自己爬蟲的爬坑過程,希望能夠找到小夥伴一起學習呀!

閱讀全文

與python爬蟲項目提取器相關的資料

熱點內容
安卓10制空霸權怎麼打開 瀏覽:260
視唱練耳用什麼app好 瀏覽:587
有兩個項目要部署在雲伺服器上 瀏覽:930
信源編解碼器的作用 瀏覽:919
remove命令linux 瀏覽:599
php發送郵件鏈接 瀏覽:34
創維冰箱壓縮機 瀏覽:869
nginxopenssl交叉編譯 瀏覽:750
相機卡無法創建新文件夾 瀏覽:225
單片機照明控制系統程序代碼 瀏覽:10
服務編程一體化 瀏覽:471
tx小霸王伺服器是什麼意思 瀏覽:545
計算機編程工齡工資怎麼算 瀏覽:491
macandroid配置環境變數 瀏覽:854
做項目文件夾的圖標 瀏覽:327
數控車床車軸編程教程 瀏覽:728
怎麼解壓截圖軟體 瀏覽:885
演算法符號橢圓 瀏覽:174
網路螞蟻app是什麼 瀏覽:273
php面向對象編程開發 瀏覽:798