摘要:準(zhǔn)備工作初探,這個(gè)文章屬于自己的一個(gè)總結(jié)。所以教程面向新手,無技術(shù)含量。凡是報(bào)錯(cuò)信息看到,就是表示縮進(jìn)不一致。注由于原網(wǎng)址不方便公布,代碼中的網(wǎng)址全部替換為了。
準(zhǔn)備工作
初探python,這個(gè)文章屬于自己的一個(gè)總結(jié)。所以教程面向新手,無技術(shù)含量。
python環(huán)境Linux基本都有,Windows下官網(wǎng)也提供了便利的安裝包,怎么安裝配置網(wǎng)上有很多教程在此就不一一說明。
我使用的python版本為Python 3.6.4,后面的代碼也是基于python3的。
做一個(gè)小爬蟲離不開獲取網(wǎng)頁內(nèi)容和匹配存儲(chǔ)內(nèi)容,那么我們先裝上python爬蟲的老朋友requests:
pip install requests
再裝上pymysql擴(kuò)展,方便將匹配到的內(nèi)容插入到mysql數(shù)據(jù)庫中:
pip install pymysql
在python中有意思的是你需要什么,就去import什么,不像php一樣獲取網(wǎng)頁內(nèi)容直接來個(gè)file_get_contents完事兒
廢話不多說,貼出代碼來看一下:
# -*- coding:utf-8 -*- # 加載 requests 模塊 import requests # GET方式獲取 Response 對象 response = requests.get("https://www.xxx.com/") if response: # 輸出html代碼到控制臺(tái) print(response.text) else: # 輸出錯(cuò)誤信息 print("requests error")
在python中縮進(jìn)一定要嚴(yán)格,初學(xué)者(4個(gè)空格為語句塊縮進(jìn))經(jīng)常犯的錯(cuò)誤是tab鍵和空間鍵混用,造成的縮進(jìn)不一致。凡是報(bào)錯(cuò)信息看到:IndentationError: unexpected indent ,就是表示縮進(jìn)不一致。
如果本身沒有編碼基礎(chǔ),那么我推薦你看一下python的基本概念:http://www.kuqin.com/abyteofp...
如果已經(jīng)有了編碼基礎(chǔ)但對縮進(jìn)這方面沒有深究,可以看python的縮進(jìn)規(guī)范:http://www.kuqin.com/abyteofp...
好,寫完代碼之后我們拿到控制臺(tái)試一下,完美輸出html代碼
既然能夠獲取html代碼,那我們就要找出需要的部分,這就用上了正則。Python 自1.5版本起增加了 re 模塊,它提供 Perl 風(fēng)格的正則表達(dá)式模式。具體細(xì)節(jié)可以在菜鳥教程中查看:http://www.runoob.com/python/...,話不多說再貼代碼:
# -*- coding:utf-8 -*- # 加載 requests 模塊 import requests # 加載 re 模塊 import re response = requests.get("https://www.xxx.com/") # 正則匹配文本 match = re.findall(r"([sS]*?)
", response.text) if match: # 輸出匹配的內(nèi)容到控制臺(tái) print(match[0]) else: # 輸出html代碼到控制臺(tái) print(response.text)
注:原網(wǎng)址為隨機(jī)一句文字顯示,每刷新一次就會(huì)變化一次。
第三步:循環(huán)匹配并加入數(shù)據(jù)庫中首先我們把數(shù)據(jù)庫和表做好,可以用sql語句創(chuàng)建:
CREATE DATABASE IF NOT EXISTS `sentence`; USE `sentence`; CREATE TABLE IF NOT EXISTS `sexy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(50) NOT NULL, `datetime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `content` (`content`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
這里將content設(shè)置為了UNIQUE KEY,是為了保證抓取到的內(nèi)容不重復(fù),如果有已存在的值便直接跳過
# -*- coding:utf-8 -*- # 加載 requests 模塊 import requests # 加載 re 模塊 import re # 加載 pymysql 模塊 import pymysql # 打開數(shù)據(jù)庫連接 db = pymysql.connect("127.0.0.1", "root", "root", "sentence", charset="utf8") # 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor() #死循環(huán)到天長地久 while(True): response = requests.get("https://www.xxx.com/") # 正則匹配文本 match = re.findall(r"([sS]*?)
", response.text) if match: sql = "INSERT INTO `sexy` (`content`) VALUES ("%s")" % (match[0]) try: # 執(zhí)行sql語句 cursor.execute(sql) # 提交到數(shù)據(jù)庫執(zhí)行 db.commit() except: # 如果發(fā)生錯(cuò)誤則回滾 db.rollback() # 輸出sql語句到控制臺(tái) print(sql) else: # 輸出html代碼到控制臺(tái) print(response.text)
運(yùn)行演示:
數(shù)據(jù)庫內(nèi)容:
python是個(gè)好東西,萬物based on python。
感覺教程貼比較難寫,每個(gè)地方都有細(xì)節(jié),但如果講細(xì)了文章又太繁瑣,若簡單些不好取舍初學(xué)者又看不懂什么意思,向那些寫易懂的入門教程文章的作者致敬。
注:由于原網(wǎng)址不方便公布,代碼中的網(wǎng)址全部替換為了xxx.com。
源碼在Github中:https://github.com/st1ven/Pyt...,歡迎Star
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41301.html
摘要:引言本文簡單講解一下的架構(gòu)。沒錯(cuò),開源的通用提取器就是要集成到架構(gòu)中,最看重的是的事件驅(qū)動(dòng)的可擴(kuò)展的架構(gòu)。架構(gòu)圖就是針對特定目標(biāo)網(wǎng)站編寫的內(nèi)容提取器,這是在通用網(wǎng)絡(luò)爬蟲框架中最需要定制的部分。 1. 引言 本文簡單講解一下Scrapy的架構(gòu)。沒錯(cuò),GooSeeker開源的通用提取器gsExtractor就是要集成到Scrapy架構(gòu)中,最看重的是Scrapy的事件驅(qū)動(dòng)的可擴(kuò)展的架構(gòu)。除了...
摘要:而分配任務(wù)的是會(huì)員中心的爬蟲羅盤,實(shí)現(xiàn)集中管理分布執(zhí)行。開源即時(shí)網(wǎng)絡(luò)爬蟲項(xiàng)目同樣也要盡量實(shí)現(xiàn)通用化。網(wǎng)址和提取規(guī)則本來應(yīng)該硬編碼到中的,現(xiàn)在隔離出來,由會(huì)員中心進(jìn)行管理,那么就很容易做通用了。 showImg(https://segmentfault.com/img/bVyEnS); 1,引言 《Scrapy的架構(gòu)初探》一文所講的Spider是整個(gè)架構(gòu)中最定制化的一個(gè)部件,Spider...
摘要:首先介紹是一個(gè)庫,他提供了一組用來操縱的默認(rèn)也就是無的,也可以配置為有有點(diǎn)類似于,但是官方團(tuán)隊(duì)進(jìn)行維護(hù)的,前景更好。使用,相當(dāng)于同時(shí)具有和的能力,應(yīng)用場景會(huì)非常多。 首先介紹Puppeteer Puppeteer是一個(gè)node庫,他提供了一組用來操縱Chrome的API(默認(rèn)headless也就是無UI的chrome,也可以配置為有UI) 有點(diǎn)類似于PhantomJS,但Puppet...
摘要:獲取獲取上下文句柄執(zhí)行計(jì)算銷毀句柄除此之外,還可以使用意為在瀏覽器環(huán)境執(zhí)行腳本,可傳入第二個(gè)參數(shù)作為句柄,而則針對選中的一個(gè)元素執(zhí)行操作。 我們?nèi)粘J褂脼g覽器或者說是有頭瀏覽器時(shí)的步驟為:啟動(dòng)瀏覽器、打開一個(gè)網(wǎng)頁、進(jìn)行交互。 無頭瀏覽器指的是我們使用腳本來執(zhí)行以上過程的瀏覽器,能模擬真實(shí)的瀏覽器使用場景。 有了無頭瀏覽器,我們就能做包括但不限于以下事情: 對網(wǎng)頁進(jìn)行截圖保存為圖片或 ...
摘要:,引言的架構(gòu)初探一文講解了的架構(gòu),本文就實(shí)際來安裝運(yùn)行一下爬蟲。第一次運(yùn)行的測試成功,接下來的工作接下來,我們將使用來實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲,省掉對每個(gè)人工去生成和測試的工作量。,文檔修改歷史,首次發(fā)布 1,引言 《Scrapy的架構(gòu)初探》一文講解了Scrapy的架構(gòu),本文就實(shí)際來安裝運(yùn)行一下Scrapy爬蟲。本文以官網(wǎng)的tutorial作為例子,完整的代碼可以在github上下載。 2,運(yùn)行環(huán)...
閱讀 2995·2021-10-11 10:57
閱讀 2474·2021-08-27 16:20
閱讀 1466·2019-08-30 13:03
閱讀 1633·2019-08-30 12:50
閱讀 3406·2019-08-29 14:16
閱讀 1617·2019-08-29 11:12
閱讀 1673·2019-08-28 17:53
閱讀 2947·2019-08-27 10:58