随着互联网的不断发展和普及,网页数量和种类不断增加,越来越多的信息需要被收集和整理。而网页抓取技术正是用来实现这一目标的工具之一。Linux作为当今更受欢迎的操作系统之一,拥有强大的命令行界面和丰富的开源软件,其应用领域也变得越来越广泛。本文将介绍如何在Linux环境下使用爬虫技术实现网页数据库的抓取。
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的茄子河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
一、常用的网页抓取工具
在Linux系统下,有许多强大的开源工具可以用来实现网页抓取。以下列举几种常用的工具:
1. wget
wget是一种常用的命令行工具,用来从网络上下载文件。它不仅可以下载整个网站,还可以指定下载某些文件或文件类型。wget不支持JavaScript和动态网页抓取。
2. curl
curl是另一种常用的命令行工具,用来处理URL(Uniform Resource Locator)和相关的协议。它支持多种协议,包括HTTP、FTP、TP等。curl也支持JavaScript和动态网页抓取。
3. scrapy
scrapy是一个Python开源的web爬虫框架,可以用来抓取各种网站。它的核心是一个调度器,可以根据需求自行定义抓取规则,支持多线程抓取。
二、网页抓取的基本流程
网页抓取的基本流程如下:
1. 获取网页源码
获取网页源码是网页抓取的之一步。在Linux系统中,可以使用wget或curl命令来获取网页源码。如下所示:
使用wget命令获取网页源码:
wget http://www.bdu.com
使用curl命令获取网页源码:
curl http://www.bdu.com
2. 解析网页源码
获取网页源码后,需要对其进行解析。解析网页源码的主要方式是使用正则表达式或XPath语法来提取所需的信息。对于难以解析的网页,可以使用一些开源的HTML解析包来处理。Linux环境下的HTML解析包有BeautifulSoup、lxml等。
3. 存储数据
网页抓取完成后,需要将抓取到的数据存储到数据库中。常用的数据库系统有MySQL、PostgreSQL等。
三、使用scrapy实现网页抓取
为了更方便地进行网页抓取,可以使用Python开源的web爬虫框架scrapy。以下是使用scrapy实现网页抓取的步骤:
1. 创建项目
使用如下命令创建一个名为myproject的scrapy项目:
scrapy startproject myproject
2. 创建spider
Spider是scrapy的核心组件之一,它定义了如何抓取和解析数据。使用如下命令创建一个名为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的作用是根据设定的规则,从指定的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框架可以更方便地进行网页抓取,并将抓取到的数据存储到数据库中。在使用网页抓取技术时,需要注意合法使用、遵守法律法规和相关规定,不得用于非法用途。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220linux环境下python怎样操作mysql数据库呢?方法如下:
首先在Linux环境下安装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、执行命令:
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,创建数据库,创建表格,插入/查询数据。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.执行sql语句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我们用使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作.这些方法包括两大类:1.执行命令,2.接收返回值
cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
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)
#执行,如果成功,n的值为1
n=cursor.execute(sql,param)
#再来执行一个查询的操作
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库可以简单和有效地去抓网页 你只需要运行一个脚本 然后分析一下你所抓取的网页 然后就可以以程序的方式得到你想要的数据了 无论是你想从从一个链接上取部分数据 或是取一个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);?﹥
mysql -u root -p
1:在终端下:mysql -V。 以下是代码此没笑片段:
$ mysql -V
2:在mysql中:mysql>察罩 status;
以下是代码森含片段:
关于linux抓取网页数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都创新互联科技公司主营:网站设计、网站建设、小程序制作、成都软件开发、网页设计、微信开发、成都小程序开发、网站制作、网站开发等业务,是专业的成都做小程序公司、成都网站建设公司、成都做网站的公司。创新互联公司集小程序制作创意,网站制作策划,画册、网页、VI设计,网站、软件、微信、小程序开发于一体。
文章题目:Linux利用爬虫技术实现网页数据库的抓取(linux抓取网页数据库)
标题URL:http://www.mswzjz.cn/qtweb/news12/400212.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能