新聞中心
隨著互聯網的不斷發(fā)展和普及,網頁數量和種類不斷增加,越來越多的信息需要被收集和整理。而網頁抓取技術正是用來實現這一目標的工具之一。Linux作為當今更受歡迎的操作系統之一,擁有強大的命令行界面和豐富的開源軟件,其應用領域也變得越來越廣泛。本文將介紹如何在Linux環(huán)境下使用爬蟲技術實現網頁數據庫的抓取。

創(chuàng)新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的茄子河網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
一、常用的網頁抓取工具
在Linux系統下,有許多強大的開源工具可以用來實現網頁抓取。以下列舉幾種常用的工具:
1. wget
wget是一種常用的命令行工具,用來從網絡上下載文件。它不僅可以下載整個網站,還可以指定下載某些文件或文件類型。wget不支持JavaScript和動態(tài)網頁抓取。
2. curl
curl是另一種常用的命令行工具,用來處理URL(Uniform Resource Locator)和相關的協議。它支持多種協議,包括HTTP、FTP、TP等。curl也支持JavaScript和動態(tài)網頁抓取。
3. scrapy
scrapy是一個Python開源的web爬蟲框架,可以用來抓取各種網站。它的核心是一個調度器,可以根據需求自行定義抓取規(guī)則,支持多線程抓取。
二、網頁抓取的基本流程
網頁抓取的基本流程如下:
1. 獲取網頁源碼
獲取網頁源碼是網頁抓取的之一步。在Linux系統中,可以使用wget或curl命令來獲取網頁源碼。如下所示:
使用wget命令獲取網頁源碼:
wget http://www.bdu.com
使用curl命令獲取網頁源碼:
curl http://www.bdu.com
2. 解析網頁源碼
獲取網頁源碼后,需要對其進行解析。解析網頁源碼的主要方式是使用正則表達式或XPath語法來提取所需的信息。對于難以解析的網頁,可以使用一些開源的HTML解析包來處理。Linux環(huán)境下的HTML解析包有BeautifulSoup、lxml等。
3. 存儲數據
網頁抓取完成后,需要將抓取到的數據存儲到數據庫中。常用的數據庫系統有MySQL、PostgreSQL等。
三、使用scrapy實現網頁抓取
為了更方便地進行網頁抓取,可以使用Python開源的web爬蟲框架scrapy。以下是使用scrapy實現網頁抓取的步驟:
1. 創(chuàng)建項目
使用如下命令創(chuàng)建一個名為myproject的scrapy項目:
scrapy startproject myproject
2. 創(chuàng)建spider
Spider是scrapy的核心組件之一,它定義了如何抓取和解析數據。使用如下命令創(chuàng)建一個名為myspider的spider:
scrapy genspider myspider http://www.example.com
其中,http://www.example.com是目標網站的地址。
3. 定義Item
Item是用來存儲抓取到的數據的容器。定義Item的方式如下:
import scrapy
class MyprojectItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
其中,title、link和desc是需要抓取的三個字段。
4. 編寫Spider
Spider的作用是根據設定的規(guī)則,從指定的URL開始抓取數據。以下是一個簡單的Spider示例:
import scrapy
from myproject.items import MyprojectItem
class MyspiderSpider(scrapy.Spider):
name = ‘myspider’
allowed_domns = [‘example.com’]
start_urls = [‘http://www.example.com’]
def parse(self, response):
for sel in response.xpath(‘//ul/li’):
item = MyprojectItem()
item[‘title’] = sel.xpath(‘a/text()’).extract_first()
item[‘link’] = sel.xpath(‘a/@href’).extract_first()
item[‘desc’] = sel.xpath(‘text()’).extract_first()
yield item
其中,allowed_domns是指定的域名,start_urls是起始的URL。
5. 運行Spider
使用如下命令啟動Spider:
scrapy crawl myspider
Spider運行后,抓取到的數據將存儲在Item Pipeline中。
四、
網頁抓取技術在數據收集和整理方面具有重要的作用。Linux系統下有許多開源的工具和框架可供選擇,如wget、curl、scrapy等。使用scrapy框架可以更方便地進行網頁抓取,并將抓取到的數據存儲到數據庫中。在使用網頁抓取技術時,需要注意合法使用、遵守法律法規(guī)和相關規(guī)定,不得用于非法用途。
成都網站建設公司-創(chuàng)新互聯,建站經驗豐富以策略為先導10多年以來專注數字化網站建設,提供企業(yè)網站建設,高端網站設計,響應式網站制作,設計師量身打造品牌風格,熱線:028-86922220linux環(huán)境下python怎樣操作mysql數據庫
linux環(huán)境下python怎樣操作mysql數據庫呢?方法如下:
首先在Linux環(huán)境下安裝mysql-python
1、下載mysql-python
打開終端:
cd /usr/local
sudo wget
官網地址:
2、解壓
sudo tar -zxvf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
3、在安仔冊裝前需進行配置
a、修改setup_posix.py中的mysql_config.path為你mysql安裝目錄的mysql_config路徑
b、修改site.cfg中的threadsafe = False,去掉mysql_config前的注釋,并改為mysql_config = /usr/local/mysql/bin/mysql_config
c、執(zhí)行命令:
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
sudo ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so.14
sudo ldconfig (這個很重要,否則后面會報錯ImportError: libmysqlclient.so.14: cannot open shared object file)
4、編譯安裝
1)python setup.py build
若未成功的話,需手動安裝setuptools:
sudo apt-get install python-setuptools
2)sudo python setup.py install
5、測試
python
>>> import MySQLdb
沒有錯誤,則表示安裝成功了。
使用python操作MySQL
使用python連接MySQL,創(chuàng)建數據庫,創(chuàng)建表格,插入/查詢數據。python_mysql.py代碼如下:
效果如圖:
若出現類似于此的警告:
/usr/local/lib/python2.6/dist-packages/MySQL_python-1.2.2-py2.6-linux-i686.egg/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet
解決辦法如下:
找到上面路徑MySQLdb下的__init__.py文件
1) 在文件中 “__init__.py”中, 注釋掉:
from sets import ImmutableSet
class DBAPISet(ImmutableSet):
新增:
class DBAPISet(frozenset):
2) 在文件”converters.py”中,注釋掉 from sets import BaseSet, Set 這一句話。
3) 在文件”converters.py”中, 修改 其中的”Set” 成為念稿宏 “set” ( 只有兩個地敬高方需要修改,即大寫改小寫)
大概 line 45: return Set() 改為 return set()
大概 line 129: Set: Set2Str, 改為 set: Set2Str,
1.引入MySQLdb庫
import MySQLdb
2.和數據庫建立連接
conn=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”sa”,db=”mytable”,charset=”utf8″)
提供的connect方法用來和數據庫建立連接,接收數個參數,返回連接對象.
比較常用的參數包括
host:數據庫主機名.默認是用本地主機.
user:數據庫登陸名.默認是當前用戶.
passwd:數據庫登陸的秘密.默認為空.
db:要使用的數據庫名.沒有默認值.
port:MySQL服務使用的TCP端口.默認是3306.
charset:數據庫編碼.
然后,這個連接對象也提供了對事務操作的支持,標準的方法
commit() 提交
rollback() 回滾
3.執(zhí)行sql語句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我們用使用連接對象獲得一個cursor對象,接下來,我們會使用cursor提供的方法來進行工作.這些方法包括兩大類:1.執(zhí)行命令,2.接收返回值
cursor用來執(zhí)行命令的方法:
callproc(self, procname, args):用來執(zhí)行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數
execute(self, query, args):執(zhí)行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執(zhí)行單條sql語句,但是重復執(zhí)行參數列表里的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集
cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode=’relative’):移動指針到某一行.如果mode=’relative’,則表示從當前所在行移動value條,如果mode=’absolute’,則表示從結果集的之一行移動value條.
下面的代碼是一個完整的例子.
#使用sql語句,這里要接收的參數都用%s占位符.要注意的是,無論你要插入的數據是什么類型,占位符永遠都要用%s
sql=”insert into cdinfo values(%s,%s,%s,%s,%s)”
#param應該為tuple或者list
param=(title,singer,imgurl,url,alpha)
#執(zhí)行,如果成功,n的值為1
n=cursor.execute(sql,param)
#再來執(zhí)行一個查詢的操作
cursor.execute(“select * from cdinfo”)
#我們使用了fetchall這個方法.這樣,cds里保存的將會是查詢返回的全部結果.每條結果都是一個tuple類型的數據,這些tuple組成了一個tuple
cds=cursor.fetchall()
#因為是tuple,所以可以這樣使用結果集
print cds
#或者直接顯示出來,看看結果集的真實樣子
print cds
#如果需要批量的插入數據,就這樣做
sql=”insert into cdinfo values(0,%s,%s,%s,%s,%s)”
#每個值的為一個tuple,整個參數集組成一個tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法來批量的插入數據.這真是一個很酷的方法!
n=cursor.executemany(sql,param)
4.關閉數據庫連接
需要分別的關閉指針對象和連接對象.他們有名字相同的方法
cursor.close()
conn.close()
以上方法就可以了。
另外,附MySQLdb的相關資料
更多關于MySQLdb的信息可以查這里:
mysqldb
使用PHP的cURL庫進行網頁抓取
使用模明仿PHP的cURL庫可以簡單和有效地去抓網頁 你只需要運行一個腳本 然后分析一下你所抓取的網頁 然后就可以以程序的方式得到你想要的數據了 無論是你想從從一個鏈接上取部分數據 或是取一個XML文件并把其導入數據庫 那怕就是簡單的獲取網頁內容 cURL 是一個功能強大的PHP庫 本文主要講述如果使用這個PHP庫
啟用 cURL 設置
首先 我們得先要確定我們的PHP是否開啟了這個庫 你可以通過使用php_info()函數來得到這一信息
﹤?phpphpinfo();?﹥
如果你可以在網頁上看到下面的輸出 那么表示cURL庫已被開啟
如果你看到的話 那么你需要設置你的PHP并開啟這個庫 如果你是在Windows平臺下 那么非常簡單 你需要改一改你的php ini文件的設置 找到php_curl dll 并取消前面的分號注釋就行了 如下所示
//取消下在的注釋extension=php_curl dll
如果你旦纖是在Linux下面 那么 你需要重新編譯你的PHP了 編輯時 你需要打開編譯參數——在configure命令上加上 –with curl 參數
一個小示例
如果一切就緒 下面是一個小例程
﹤?php// 初始化一個 cURL 對象$curl = curl_init();
// 設置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );
// 設置headercurl_setopt($curl CURLOPT_HEADER );
// 設置cURL 參數 要求結果保存到字符串中還是輸出到屏幕上槐鏈 curl_setopt($curl CURLOPT_RETURNTRANSFER );
// 運行cURL 請求網頁$data = curl_exec($curl);
// 關閉URL請求curl_close($curl);
// 顯示獲得的數據var_dump($data);
如何POST數據
上面是抓取網頁的代碼 下面則是向某個網頁POST數據 假設我們有一個處理表單的網址// example /sendS php 其可以接受兩個表單域 一個是號碼 一個是短信內容
﹤?php$phoneNumber =;$message = This message was generated by curl and php ;$curlPost = pNUMBER=urlencode($phoneNumber) &MESSAGE=urlencode($message) &SUBMIT=Send ;$ch = curl_init();curl_setopt($ch CURLOPT_URL // example /sendS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);?﹥
從上面的程序我們可以看到 使用CURLOPT_POST設置HTTP協議的POST方法 而不是GET方法 然后以CURLOPT_POSTFIELDS設置POST的數據
關于代理服務器
下面是一個如何使用代理服務器的示例 請注意其中高亮的代碼 代碼很簡單 我就不用多說了
﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );curl_setopt($ch CURLOPT_PROXY fakeproxy :);curl_setopt($ch CURLOPT_PROXYUSERPWD user:password );$data = curl_exec();curl_close($ch);?﹥
關于SSL和Cookie
關于SSL也就是HTTPS協議 你只需要把CURLOPT_URL連接中的//變成//就可以了 當然 還有一個參數叫CURLOPT_SSL_VERIFYHOST可以設置為驗證站點
關于Cookie 你需要了解下面三個參數
CURLOPT_COOKIE 在當面的會話中設置一個cookie
CURLOPT_COOKIEJAR 當會話結束的時候保存一個Cookie
CURLOPT_COOKIEFILE Cookie的文件
HTTP服務器認證
最后 我們來看一看HTTP服務器認證的情況
﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD : )
$data = curl_exec();curl_close($ch);?﹥
linux下mysql 怎么查詢數據庫
mysql -u root -p
1:在終端下:mysql -V。 以下是代碼此沒笑片段:
$ mysql -V
2:在mysql中:mysql>察罩 status;
以下是代碼森含片段:
關于linux抓取網頁數據庫的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都創(chuàng)新互聯科技公司主營:網站設計、網站建設、小程序制作、成都軟件開發(fā)、網頁設計、微信開發(fā)、成都小程序開發(fā)、網站制作、網站開發(fā)等業(yè)務,是專業(yè)的成都做小程序公司、成都網站建設公司、成都做網站的公司。創(chuàng)新互聯公司集小程序制作創(chuàng)意,網站制作策劃,畫冊、網頁、VI設計,網站、軟件、微信、小程序開發(fā)于一體。
本文題目:Linux利用爬蟲技術實現網頁數據庫的抓取(linux抓取網頁數據庫)
URL地址:http://www.5511xx.com/article/cohcjdg.html


咨詢
建站咨詢
