『壹』 python什麼爬蟲庫好用
請求庫:
1. requests 這個庫是爬蟲最常用的一個庫
2. Selenium Selenium 是一個自動化測試工具,利用它我們可以驅動瀏覽器執行特定的動作,如點擊、下拉等操作 對於一些用JS做誼染的頁面來說,這種抓取方式是非常有效的。
3.ChomeDrive 安裝了這個庫,才能驅動Chrome瀏覽器完成相應的操作
4.GeckoDriver 使用W3C WebDriver兼容客戶端與基於Gecko的瀏覽器進行交互的代理。
5.PhantomJS PhantomJS 是一個無界面 、可腳本編程的 WebKit 瀏覽器引擎,它原生支持多種Web標准:Dom操作,css選擇器,json,Canvas以及SVG。
6.aiohttp 之前接收requests庫是一個阻塞式HTTP請求庫,當我們發送一個請求後。程序會一直等待伺服器響應,直到伺服器響應後,程序才會最下一步處理。其實,這個過程比較耗時間。如果程序可以在等待的過程中做一些其他的事情,如進行請求的調度,響應的處理等,那麼爬蟲的效率就會比之前的那種方式有很大的提升。 而aiohttp就是這樣一個提供非同步web服務的庫。使用說這個庫用起來還是相當方便的。
解析庫:
1.lxml lxml是python的一個解析庫,這個庫支持HTML和xml的解析,支持XPath的解析方式,而且效率也是非常高的,深受廣大程序員的熱愛
2.Beautiful Soup Beautiful Soup也是python里一個HTML或XMl的解析庫,它可以很方便的懂網頁中提取數據,擁有強大的API和多種解析方式。
3.pyquery 同樣是一個強大的網頁解析工具,它提供了和 jQuery 類似的語法來解析HTML 文梢,
資料庫:
1.mysql 資料庫
2.MongoDB Mo goDB 是由 ++語言編寫的非關系型資料庫, 是一個基於分布式文件存儲的開源資料庫系統內容存儲形式類似 JSON 對象,它的欄位值可以包含其他文檔、數組及文檔數組,非常靈活
3.Redis 是一個基於 存的高效的非關系型資料庫,
存儲庫:
1.PyMySOL
2.PyMongo
3.redis-py
4.RedisDump
web庫:
1.Flask 是一個輕量級的Web服務程序,它簡單,易用,靈活
2.Tornado 是一個支持非同步的Web框架,通過使用非阻塞I/O流,可以支持成千上萬的開放式連接。
『貳』 python3 怎麼爬取新聞網站
從門戶網站爬取新聞,將新聞標題,作者,時間,內容保存到本地txt中。
importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題
其中bs4需要自己裝一下,安裝方法可以參考:Windows命令行下pip安裝python whl包
程序:
#coding=utf-8
importre#正則表達式
importbs4#BeautifulSoup4解析模塊
importurllib2#網路訪問模塊
importNews#自己定義的新聞結構
importcodecs#解決編碼問題的關鍵,使用codecs.open打開文件
importsys#1解決不同頁面編碼問題
reload(sys)#2
sys.setdefaultencoding('utf-8')#3
#從首頁獲取所有鏈接
defGetAllUrl(home):
html=urllib2.urlopen(home).read().decode('utf8')
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'
links=soup.find_all('a',href=re.compile(pattern))
forlinkinlinks:
url_set.add(link['href'])
defGetNews(url):
globalNewsCount,MaxNewsCount#全局記錄新聞數量
whilelen(url_set)!=0:
try:
#獲取鏈接
url=url_set.pop()
url_old.add(url)
#獲取代碼
html=urllib2.urlopen(url).read().decode('utf8')
#解析
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'#鏈接匹配規則
links=soup.find_all('a',href=re.compile(pattern))
#獲取URL
forlinkinlinks:
iflink['href']notinurl_old:
url_set.add(link['href'])
#獲取信息
article=News.News()
article.url=url#URL信息
page=soup.find('div',{'id':'page'})
article.title=page.find('h1').get_text()#標題信息
info=page.find('div',{'class':'article-info'})
article.author=info.find('a',{'class':'name'}).get_text()#作者信息
article.date=info.find('span',{'class':'time'}).get_text()#日期信息
article.about=page.find('blockquote').get_text()
pnode=page.find('div',{'class':'article-detail'}).find_all('p')
article.content=''
fornodeinpnode:#獲取文章段落
article.content+=node.get_text()+' '#追加段落信息
SaveNews(article)
printNewsCount
break
exceptExceptionase:
print(e)
continue
else:
print(article.title)
NewsCount+=1
finally:
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break
defSaveNews(Object):
file.write("【"+Object.title+"】"+" ")
file.write(Object.author+" "+Object.date+" ")
file.write(Object.content+" "+" ")
url_set=set()#url集合
url_old=set()#爬過的url集合
NewsCount=0
MaxNewsCount=3
home='http://jia..com/'#起始位置
GetAllUrl(home)
file=codecs.open("D:\test.txt","a+")#文件操作
forurlinurl_set:
GetNews(url)
#判斷數據是否收集完成
ifNewsCount==MaxNewsCount:
break
file.close()
新聞文章結構
#coding:utf-8
#文章類定義
classNews(object):
def__init__(self):
self.url=None
self.title=None
self.author=None
self.date=None
self.about=None
self.content=None
對爬取的文章數量就行統計。
『叄』 python絎涓夋柟搴撴湁鍝浜
python絎涓夋柟搴撳寘鎷錛歍VTK銆丮ayavi銆乀raitUI銆丼ciPy銆
Python絎涓夋柟搴揟VTK錛岃茶В縐戝﹁$畻涓夌淮琛ㄨ揪鍜屽彲瑙嗗寲鐨勫熀鏈姒傚康銆
Python絎涓夋柟搴揗ayavi錛岃茶В縐戝﹁$畻涓夌淮琛ㄨ揪鍜屽彲瑙嗗寲鐨勪嬌鐢ㄦ柟娉曘
Python絎涓夋柟搴揟raitUI錛岃茶В浜や簰寮忕戝﹁$畻涓夌淮鏁堟灉搴旂敤鐨勫紑鍙戞柟娉曘
Python絎涓夋柟搴揝ciPy錛屽垵姝ヤ粙緇嶇戝﹁$畻宸ュ叿綆便
Python縐戝﹁$畻涓夌淮鍙瑙嗗寲璇劇▼璁茶В錛屽埄鐢≒ython璇璦瀵圭戝﹁$畻鏁版嵁榪涜岃〃杈懼拰涓夌淮鍙瑙嗗寲灞曠ず鐨勬妧鏈鍜屾柟娉曪紝甯鍔╁︿範鑰呮帉鎻″埄鐢ㄤ笁緇存晥鏋滆〃杈劇戝﹀拰宸ョ▼鏁版嵁鐨勮兘鍔涖侾ython縐戝﹁$畻涓夌淮鍙瑙嗗寲璇劇▼闈㈠悜縐戝﹀拰宸ョ▼鑳屾櫙鐨勭紪紼嬪︿範鑰呫
Python鐨勭壒鐐
綆鍗曪細Python鏄涓縐嶄唬琛ㄧ畝鍗曚富涔夋濇兂鐨勮璦銆傞槄璇諱竴涓鑹濂界殑Python紼嬪簭灝辨劅瑙夊儚鏄鍦ㄨ昏嫳璇涓鏍楓傚畠浣誇綘鑳藉熶笓娉ㄤ簬瑙e喅闂棰樿屼笉鏄鍘繪悶鏄庣櫧璇璦鏈韜銆
鏄撳︼細Python鏋佸叾瀹規槗涓婃墜錛屽洜涓篜ython鏈夋瀬鍏剁畝鍗曠殑璇存槑鏂囨。銆
鏄撶淮鎶わ細椋庢牸娓呮櫚鍒掍竴銆佸己鍒剁緝榪涖
閫熷害杈冨揩錛歅ython鐨勫簳灞傛槸鐢–璇璦鍐欑殑錛屽緢澶氭爣鍑嗗簱鍜岀涓夋柟搴撲篃閮芥槸鐢–鍐欑殑錛岃繍琛岄熷害闈炲父蹇銆
鍏嶈垂寮婧愶細Python鏄疐LOSS錛堣嚜鐢憋紡寮鏀炬簮鐮佽蔣浠訛級涔嬩竴銆備嬌鐢ㄨ呭彲浠ヨ嚜鐢卞湴鍙戝竷榪欎釜杞浠剁殑鎷瘋礉銆侀槄璇誨畠鐨勬簮浠g爜銆佸瑰畠鍋氭敼鍔ㄣ佹妸瀹冪殑涓閮ㄥ垎鐢ㄤ簬鏂扮殑鑷鐢辮蔣浠朵腑銆侳LOSS鏄鍩轟簬涓涓鍥浣撳垎浜鐭ヨ瘑鐨勬傚康銆
浠ヤ笂鍐呭瑰弬鑰鐧懼害鐧劇-Python縐戝﹁$畻涓夌淮鍙瑙嗗寲
『肆』 python爬蟲用什麼庫
以下是爬蟲經常用到的庫
請求庫
1. requests
requests庫應該是現在做爬蟲最火最實用的庫了,非常的人性化。有關於它的使用我之前也寫過一篇文章 一起看看Python之Requests庫 ,大家可以去看一下。
2.urllib3
urllib3是一個非常強大的http請求庫,提供一系列的操作URL的功能。
3.selenium
自動化測試工具。一個調用瀏覽器的 driver,通過這個庫你可以直接調用瀏覽器完成某些操作,比如輸入驗證碼。
對於這個庫並非只是Python才能用,像JAVA、Python、C#等都能夠使用selenium這個庫
4.aiohttp
基於 asyncio 實現的 HTTP 框架。非同步操作藉助於 async/await 關鍵字,使用非同步庫進行數據抓取,可以大大提高效率。
這個屬於進階爬蟲時候必須掌握的非同步庫。有關於aiohttp的詳細操作,可以去官方文檔:https://aiohttp.readthedocs.io/en/stable/
Python學習網- 專業的python自學、交流公益平台!
解析庫
1、beautifulsoup
html 和 XML 的解析,從網頁中提取信息,同時擁有強大的API和多樣解析方式。一個我經常使用的解析庫,對於html的解析是非常的好用。對於寫爬蟲的人來說這也是必須掌握的庫。
2、lxml
支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
3、pyquery
jQuery 的 Python 實現,能夠以 jQuery 的語法來操作解析 HTML 文檔,易用性和解析速度都很好。
數據存儲
1、pymysql
官方文檔:https://pymysql.readthedocs.io/en/latest/
一個純 Python 實現的 MySQL 客戶端操作庫。非常的實用、非常的簡單。
2、pymongo
官方文檔:https://api.mongodb.com/python/
顧名思義,一個用於直接連接 mongodb 資料庫進行查詢操作的庫。
3、redismp
redis-mp是將redis和json互轉的工具;redis-mp是基於ruby開發,需要ruby環境,而且新版本的redis-mp要求2.2.2以上的ruby版本,centos中yum只能安裝2.0版本的ruby。需要先安裝ruby的管理工具rvm安裝高版本的ruby。