资讯专栏INFORMATION COLUMN

python爬虫之连接mysql

ISherry / 1078人阅读

摘要:准备工作运行本地数据库服务器安装建表连接数据库用操作还是比较简单的,如果有一点数据库基础的话,可以直接上手,最后一定不要忘了写提交,不然数据只是缓存,存不到数据库里完整示例爬取百度上最热的几个新闻标题,并存储到数据库,太懒了没写注释

准备工作

运行本地数据库服务器

    mysql -u root -p

安装pymysql

    pip install pymysql
建表
CREATE DATABASE crawls;
// show databases; 
use db;

CREATE TABLE IF NOT EXISTS baiduNews("
       "id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,"
       "ranking VARCHAR(30),"
       "title VARCHAR(60),"
       "datetime TIMESTAMP,"
       "hot VARCHAR(30));
// show tables;
pymysql连接数据库
db = pymysql.connect(host="localhost", port=3306, user="root", passwd="123456", 
                    db="crawls", charset="utf8")
cursor = db.cursor()
cursor.execute(sql_query)
db.commit()

用python操作mysql还是比较简单的,如果有一点数据库基础的话,可以直接上手,最后一定不要忘了写commit提交,不然数据只是缓存,存不到数据库里

完整示例

爬取百度上最热的几个新闻标题,并存储到数据库,太懒了没写注释-_- (确保本地mysql服务器已经打开)

"""
Get the hottest news title on baidu page,
then save these data into mysql
"""
import datetime

import pymysql
from pyquery import PyQuery as pq
import requests
from requests.exceptions import ConnectionError

URL = "https://www.baidu.com/s?wd=%E7%83%AD%E7%82%B9"
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
    "Upgrade-Insecure-Requests": "1"
}

def get_html(url):
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except ConnectionError as e:
        print(e.args)
        return None

def parse_html(html):
    doc = pq(html)
    trs = doc(".FYB_RD table.c-table tr").items()
    for tr in trs:
        index = tr("td:nth-child(1) span.c-index").text()
        title = tr("td:nth-child(1) span a").text()
        hot = tr("td:nth-child(2)").text().strip(""")
        yield {
            "index":index,
            "title":title,
            "hot":hot
        }

def save_to_mysql(items):
    try:
        db = pymysql.connect(host="localhost", port=3306, user="root", passwd="123456",
                             db="crawls", charset="utf8")
        cursor = db.cursor()
        cursor.execute("use crawls;")
        cursor.execute("CREATE TABLE IF NOT EXISTS baiduNews("
                       "id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,"
                       "ranking VARCHAR(30),"
                       "title VARCHAR(60),"
                       "datetime TIMESTAMP,"
                       "hot VARCHAR(30));")
        try:
            for item in items:
                print(item)
                now = datetime.datetime.now()
                now = now.strftime("%Y-%m-%d %H:%M:%S")
                sql_query = "INSERT INTO baiduNews(ranking, title, datetime, hot) VALUES ("%s", "%s", "%s", "%s")" % (
                            item["index"], item["title"], now, item["hot"])
                cursor.execute(sql_query)
                print("Save into mysql")
            db.commit()
        except pymysql.MySQLError as e:
            db.rollback()
            print(e.args)
            return
    except pymysql.MySQLError as e:
        print(e.args)
        return

def check_mysql():
    try:
        db = pymysql.connect(host="localhost", port=3306, user="root", passwd="123456",
                             db="crawls", charset="utf8")
        cursor = db.cursor()
        cursor.execute("use crawls;")
        sql_query = "SELECT * FROM baiduNews"
        results = cursor.execute(sql_query)
        print(results)
    except pymysql.MySQLError as e:
        print(e.args)

def main():
    html = get_html(URL)
    items = parse_html(html)
    save_to_mysql(items)
    #check_mysql()

if __name__ == "__main__":
    main()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43127.html

相关文章

  • 爬虫初级操作(二)

    摘要:本篇内容为网络爬虫初级操作的简单介绍,内容主要有以下部分解析网页数据库解析网页一般来说,解析网页有三种方式正则表达式。关于,我们最后再来看一个实战项目爬取北京二手房价格。代码如下第页这样就成功爬取了安居客上前页的北京二手房价格。 本篇内容为 python 网络爬虫初级操作的简单介绍,内容主要有以下 2 部分: 解析网页 数据库 解析网页 一般来说,解析网页有三种方式:正则表达式、...

    崔晓明 评论0 收藏0
  • 爬虫初级操作(二)

    摘要:本篇内容为网络爬虫初级操作的简单介绍,内容主要有以下部分解析网页数据库解析网页一般来说,解析网页有三种方式正则表达式。关于,我们最后再来看一个实战项目爬取北京二手房价格。代码如下第页这样就成功爬取了安居客上前页的北京二手房价格。 本篇内容为 python 网络爬虫初级操作的简单介绍,内容主要有以下 2 部分: 解析网页 数据库 解析网页 一般来说,解析网页有三种方式:正则表达式、...

    callmewhy 评论0 收藏0
  • Python入门网络爬虫精华版

    摘要:学习网络爬虫主要分个大的版块抓取,分析,存储另外,比较常用的爬虫框架,这里最后也详细介绍一下。网络爬虫要做的,简单来说,就是实现浏览器的功能。 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下。 首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧:宁哥的小站-网络爬虫,当我们在浏览器中输入...

    Bmob 评论0 收藏0

发表评论

0条评论

ISherry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<