开发者中心 > 上云实践 > 教程详情

[MySQL] RDS For MySQL爬虫实践

更新时间  2018-08-17 09:35:19 704

本教程爬取的是新浪微博微公益平台的微拍卖拍品信息列表。爬虫爬取的信息为拍品序号、拍品名称、起拍价和当前价,并通过数据库客户端DAS写入到MySQL数据库中。


下面,让我们开始搭建小爬虫吧!

1.下载软件

1.1 下载pycharm community版

>下载路径:https://www.jetbrains.com/pycharm/download/#section=windows 选择community版

1.2下载python2.7.15

>下载路径:https://www.python.org/downloads/release/python-2715/,选择Windows x86-64 MSI installer

2.安装

2.1 安装python-2.7.15
>运行python-2.7.15.amd64.msi>Install for all users>选择目标路径,点击Next>点击Next>点击Finish
2.2 安装PyCharm



>根据系统操作系统版本选择, 64位系统选择64-bit launcher, 其他勾选如下图

>勾选Run Pycharm Community **,点击Finish


>阅读完政策说明后点击Accept

>点击create new project


>设置Project的存储路径>点击create

>点击close

2.3在pycharm中安装第三方库

>点击file>点击settings>点击project untitled1(其中untitled1为自定义的项目名)>点击 project interpreter>点击右侧的“+”号

11.jpg
>在搜索框中输入pymysql,选中PyMySQL,点击Install Package


出现以下提示说明安装成功,关闭该页面


3.购买云数据库

在华为云官网开发者支持计划领取免费套餐,或者购买MySQL数据库


4.申请数据库客户端DAS

>目前DAS在公测阶段,您可以通过以下链接申请免费试用https://www.huaweicloud.com/product/das.html


5.登录华为云数据库管理页面

选择您要存储数据的实例,点击登录,跳转到数据库客户端DAS登录页面
18.jpg>DAS页面中输入管理员账户名和密码,账户名可在实例信息页面查到,一般默认为root,密码为您在购买数据库实例时输入的管理员密码。

>登陆DAS后右键点击实例名>点击SQL窗口,将以下SQL语句输入编辑框中,点击执行SQL语句。

CREATE DATABASE sina;
CREATE TABLE `sina`.`sina_paimai` (
  `id` int(50) AUTO_INCREMENT NOT NULL,
  `project_name` varchar(50) NULL,
  `project_start_price` varchar(50) NULL,
  `project_now_price` varchar(50) NULL,
  PRIMARY KEY(`id`)
) DEFAULT CHARACTER SET = utf8,
COLLATE = utf8_general_ci,
ENGINE = InnoDB;


19.JPG
完成上述步骤后我们已经在sina中新建了一张名为sina_paimai的表,表**有四个字段,分别是id,project_name,project_start_price,project_now_price

6.搭建爬虫

>打开pycharm>右键点击project untitled1>点击new>点击python file


给你要创建的python程序起一个名字,点击OK.
然后把以下爬虫代码复制进你刚刚创建的python文件中,并将代码中的host、port、user、 password改成你的数据库实例公网IP、端口号、数据库账户名和密码保存就可以啦~
爬虫代码:

#coding=utf-8
import pymysql
import urllib2 as url
import re
#获取新浪微博微公益平台微拍卖第一页的源代码
html='
https://gongyi.weibo.com/list/auction?on_state=0&theme_id=0&title=&order=hot&page=1'
content=url.urlopen(html)
text=content.read()
#解析网页源代码,用正则表达式获取源代码中的拍品名、起拍价和当前价
project_name=re.findall(r'<a href="/auction/detail.goods_id=......">(.*?)</a></div>', text)
project_start_price=re.findall(r'起拍价<em class="num">(.*?)</em>元,当前价', text)
project_now_price=re.findall(r'当前价<em class="num">(.*?)</em>元', text)
#连接到云数据库
connection=pymysql.connect(
    host='xxx.xxx.xxx.xxx',
    port=3306,
    user='sina',
    password='xxxxxxx',
    db='sina',
    charset='utf8',
    cursorclass=pymysql.cursors.DictCursor)
#用sql语句把拍品名、起拍价和当前价拆入到已经建好的sina_paimai表中
try:
    for i in range(0,len(project_name),1):
        with connection.cursor() as cursor:
            sql='insert into sina_paimai(project_name,project_start_price,project_now_price)VALUES(%s,%s,%s)'
            cursor.execute(sql,(project_name
,project_start_price
,project_now_price
));
        connection.commit()
finally:
     connection.close();


最后点击run!

7.在数据库客户端DAS中查看爬取的数据

>登录DAS, 在SQL窗口中输入

SELECT * FROM `sina_paimai`

,点击执行SQL就可以看到爬取的结果啦。

展示结果:如拍卖序号:1,拍品名称:春节晚会小虎队演出服-霹雳虎,起拍价:100,当前价 57680

id:拍卖序号

project_name 拍卖名称

project_start_price 起拍价 
Project_now_price 当前价

17.jpg


立即注册