1. 程式人生 > 資料庫 >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年的文章
     ......