将爬虫爬到的数据存入MySQL数据库

将从一个网站上爬到的数据存入MySQL数据库

先要在数据库中建立相对于的table(表),然后将爬到的数据存入表中就可以了,如下是用类实现的某电影网站爬到的电影数据存入数据库的过程
import requests
import csv
from lxml import etree
import pymysql

class ConnMysql(object):
    def __init__(self):
        # 连接数据库
        self.db = pymysql.connect(host=数据库的地址,
                                  port=3306,
                                  database=数据库名称,
                                  user=数据库的用户名,
                                  password=进入数据库的密码,
                                  charset='utf8')
        self.cursor = self.db.cursor()
    def insert(self,dict1):
        # 将数据添加到数据库中的movie表中
        sql = "insert into movie1 (name,type,box,price,people_time,country,time,detail_href) values('%s','%s','%s','%s','%s','%s','%s','%s')"%\
              (dict1['name'],dict1['type'],dict1['box'],dict1['price'],dict1['people_time'],dict1['country'],dict1['time'],dict1['detail_href'])
        self.cursor.execute(sql)
        self.db.commit() # 提交操作

class Pachong(object):
    def __init__(self):
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

    def work(self,url):
        response = requests.get(url=url, headers=self.headers)
        html_doc = etree.HTML(response.text)
        list1 = ['name','type','box','price','people_time','country','time','detail_href']
        for j in range(2,27):
            dict_data = {}
            for num in range(0,8):
                try:
                    if num ==7:  # 详情页网址
                        value = html_doc.xpath('//tr[%d]/td[1]/a/@href' % j)[0]
                    elif num ==0: # 电影名称
                        value = html_doc.xpath('//tr[%d]/td[1]/a/p/text()' % j)[0]
                    else:
                        value = html_doc.xpath('//tr[%d]/td[%d]/text()'%(j,num+1))[0]
                except:
                    value = None
                dict_data[list1[num]] = value # 将数据存入字典
            save_data(dict_data)  # 执行保存函数用于选择存储方式
            print(j)


def save_data(dict_data):
    # 存数据库
    database = ConnMysql()
    database.insert(dict_data)
if __name__ == '__main__':
        test = Pachong()
        base_url = '爬取的网站网址'
        for i in range(2008, 2020): # 这里是因为爬取的好几页的内容,而每页的网址是通过base_url与数字拼接的
            url = base_url + str(i)
            test.work(url)

在数据库中查询结果如下图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44166997/article/details/90045848