python简单爬虫入库_初探python之做一个简单小爬虫

准备工作

初探python,这个文章属于自己的一个总结。所以教程面向新手,无技术含量。

python环境Linux基本都有,Windows下官网也提供了便利的安装包,怎么安装配置网上有很多教程在此就不一一说明。

我使用的python版本为Python 3.6.4,后面的代码也是基于python3的。

分析需求

做一个小爬虫离不开获取网页内容和匹配存储内容,那么我们先装上python爬虫的老朋友requests:

pip install requests

再装上pymysql扩展,方便将匹配到的内容插入到mysql数据库中:

pip install pymysql

第一步:获取网页内容

在python中有意思的是你需要什么,就去import什么,不像php一样获取网页内容直接来个file_get_contents完事儿

废话不多说,贴出代码来看一下:

# -*- coding:utf-8 -*-

# 加载 requests 模块

import requests

# GET方式获取 Response 对象

response = requests.get('https://www.xxx.com/')

if response:

# 输出html代码到控制台

print(response.text)

else:

# 输出错误信息

print('requests error')

在python中缩进一定要严格,初学者(4个空格为语句块缩进)经常犯的错误是tab键和空间键混用,造成的缩进不一致。凡是报错信息看到:IndentationError: unexpected indent ,就是表示缩进不一致。

如果本身没有编码基础,那么我推荐你看一下python的基本概念:http://www.kuqin.com/abyteofpython_cn/ch04.html

如果已经有了编码基础但对缩进这方面没有深究,可以看python的缩进规范:http://www.kuqin.com/abyteofpython_cn/ch04s09.html

好,写完代码之后我们拿到控制台试一下,完美输出html代码

第二步:正则匹配内容

既然能够获取html代码,那我们就要找出需要的部分,这就用上了正则。Python 自1.5版本起增加了 re 模块,它提供 Perl 风格的正则表达式模式。具体细节可以在菜鸟教程中查看:http://www.runoob.com/python/python-reg-expressions.html,话不多说再贴代码:

# -*- coding:utf-8 -*-

# 加载 requests 模块

import requests

# 加载 re 模块

import re

response = requests.get('https://www.xxx.com/')

# 正则匹配文本

match = re.findall(r'

([\s\S]*?)

', response.text)

if match:

# 输出匹配的内容到控制台

print(match[0])

else:

# 输出html代码到控制台

print(response.text)

注:原网址为随机一句文字显示,每刷新一次就会变化一次。

第三步:循环匹配并加入数据库中

首先我们把数据库和表做好,可以用sql语句创建:

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设置为了UNIQUE KEY,是为了保证抓取到的内容不重复,如果有已存在的值便直接跳过

# -*- coding:utf-8 -*-

# 加载 requests 模块

import requests

# 加载 re 模块

import re

# 加载 pymysql 模块

import pymysql

# 打开数据库连接

db = pymysql.connect('127.0.0.1', 'root', 'root', 'sentence', charset='utf8')

# 使用cursor()方法获取操作游标

cursor = db.cursor()

#死循环到天长地久

while(True):

response = requests.get('https://www.xxx.com/')

# 正则匹配文本

match = re.findall(r'

([\s\S]*?)

', response.text)

if match:

sql = "INSERT INTO `sexy` (`content`) VALUES ('%s')" % (match[0])

try:

# 执行sql语句

cursor.execute(sql)

# 提交到数据库执行

db.commit()

except:

# 如果发生错误则回滚

db.rollback()

# 输出sql语句到控制台

print(sql)

else:

# 输出html代码到控制台

print(response.text)

运行演示:

数据库内容:

总结

python是个好东西,万物based on python。

感觉教程贴比较难写,每个地方都有细节,但如果讲细了文章又太繁琐,若简单些不好取舍初学者又看不懂什么意思,向那些写易懂的入门教程文章的作者致敬。

注:由于原网址不方便公布,代码中的网址全部替换为了xxx.com。

源码在Github中:https://github.com/st1ven/Python-Spider-Demo,欢迎Star

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值