将爬虫爬到的数据存入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)"
        data = [dict1['name'],dict1['type'],dict1['box'],dict1['price'],dict1['people_time'],dict1['country'],dict1['time'],dict1['detail_href']]
        self.cursor.execute(sql,data)
        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)
在数据库中查询结果如下图:

在这里插入图片描述

  • 17
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值