数据库
首页 > 数据库> > Python爬取学校文章并储存mysql

Python爬取学校文章并储存mysql

作者:互联网

Python爬取学校文章并储存mysql

python爬取学校文章并储存mysql

问题简介

爬取福⼤要⽂(http://news.fzu.edu.cn/html/fdyw/) 要求: 1.包含发布⽇期,作者,标题,阅读数以及正⽂。 2.可⾃动翻⻚。 3.范围:2020年内

思路

要获得的数据一共可以分为几个阶段:
1.发布⽇期,标题,二级网址可以从一级网址网页源码获得(http://news.fzu.edu.cn/html/fdyw/1.html)
【1.html代表当前是第一页,要翻页把这里改成2/3/…html】


<div  class="list_main_content">
<ul>
          
     
<li>
    <span class="list_time">2020-11-26</span>
    <a href="/html/fdyw/2020/11/26/f1981f47-bd8a-4edb-8340-d0bd213f3c4b.html">福州大学实现福建省属高校获批国家重大科研仪器研制项目零的突破</a>
</li>
......(⽇期,标题,二级网址的一部分在这个节点)

2.作者,正文内容,阅读数接口网址可以从二级网址网页源码获得

阅读数接口网址需要进行一定处理

$.ajax(
{type:'post',
url:'/interFace/getDocReadCount.do?id=506980',(需要获得的阅读数接口网址)
timeout:2000,
.......

3.阅读数需要发送post获取的,其中需要一个数据id,发送后就可以获得阅读数

储存

这里就连接库,创建表,添加数据

def import_mysql(data_list):
    db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='spiders', charset='utf8')
    cursor = db.cursor()

    # 如果数据表已经存在使用execute()方法删除表。
    cursor.execute("DROP TABLE IF EXISTS novel")

    sql = 'CREATE TABLE IF NOT EXISTS novel (' \
          'date VARCHAR(255) NOT NULL, ' \
          'title VARCHAR(255) NOT NULL, ' \
          'author VARCHAR(255) NOT NULL, ' \
          'read_count VARCHAR(255) NOT NULL,' \
          'content VARCHAR(10000) NOT NULL)'
    cursor.execute(sql)
    table = 'novel'
    for data in data_list:
        keys = ', '.join(data.keys())
        values = ', '.join(['%s'] * len(data))
        sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
        try:
            if cursor.execute(sql, tuple(data.values())):
                print('Successful import mysql')
                db.commit()
        except:
            print('Failed import mysql')
            db.rollback()
    db.close()

注意

我是把每一份数据处理好以后添加到一个字典,然后再把字典添加到一个列表里面,这里要注意把创建空字典放入循环里,否则地址不会更新

    for data in goal.items():
        novel = {"date": data('.list_time').text(), "title": "", "author": "", "read_count": "", "content": ""}

        if novel["date"][:4] == "2020":		#这里是为了只获取2020年的文章
     ......

标签:novel,Python,db,阅读数,爬取,values,mysql,data
来源: https://blog.csdn.net/weixin_45841855/article/details/110311182