将爬取的数据放到mysql数据库中

大lao们,我想把我爬取的数据放到myasql数据库里,该添点什么?


import requests  # 发送网络请求的工具包
from lxml import etree  # 转换数据类型
from pymysql import *

headers = {
    # 模拟浏览器
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
# 设置多个网页,预留更改位置
url = 'https://www.autohome.com.cn/grade/carhtml/%d.html'
# 设置A~Z的选项网页

for i in range(ord("A"), ord("Z") + 1):
    if chr(i) == 'U':
        continue
    new_url = f"https://www.autohome.com.cn/grade/carhtml/{chr(i)}.html"  # 字符串拼接A-Z字母
    # new_url = format(url%i)

    respone = requests.get(url=new_url, headers=headers)  # 发送请求
    # print(respone.text)
    # 提取我们想要的数据
    html_data = etree.HTML(respone.text)
    # print(html_data)
    new_url_list = html_data.xpath('//ul[@class="rank-list-ul"]/li/div/a[@class="red"]/@href')
    # print(new_url_list)

    for new_url in new_url_list:
        # 加上“https:”,使网址可以正常点击
        #print("https:" + new_url)
        res = requests.get("https:" + new_url)
        # print(res.text)
        html = etree.HTML(res.text)
        car_name = html.xpath('//div[@class="athm-title"]/div/a/text()')
        #print(car_name)
        car_info_list = html.xpath('//div[@class="spec-wrap active"]/dl/dd')
        for car_info in car_info_list:
            try:
                car_kind = car_info.xpath(
                    './/div[@class="spec-wrap active"]/dl/dd//div[@class="name-param"]/p/a/text()')
                #print(car_kind)
                car_config = car_info.xpath(
                    './/div[@class="spec-wrap active"]/dl/dd//div[@class="name-param"]/p/span/text()')
                # print(car_config)
                price = car_info.xpath('.//div[@class="guidance-price"]//span/text()')
                #print(price)

            except:
                print("当前汽车已停产。")

你需要写一个将数据插入mysql中的函数,爬好数据后调用这个函数,把数据存入。
功能实现使用你导入的pymysql就行了,可以参考:Python数据库编程pymysql

拿postgresql数据库举例如下

import psycopg2  
import time as times
from datetime import *
from dateutil.relativedelta import *
import calendar
import datetime
def connect(sql_command):
    start_time=times.time()
    conn= psycopg2.connect(database='hunan_tms',user='gpadmin',password='Zicai@2020',host='134.161.15.22',port='5432')
    cur = conn.cursor()
    cur.execute(sql_command)
    conn.commit()
    conn.close()
    end_time=times.time()
    print('本次执行共花费{0}秒'.format(end_time-start_time))

找找pymysql的代码,逻辑应该也差不多。
建立连接(数据库名,用户名,密码,IP,端口)
构建游标(cursor)
通过游标来执行SQL。
连接提交,连接关闭
您可以先试着用面向过程的方式实现,后续再封装成函数类,传SQL调用即可。
PS :如果要获取SQL结果,也可调用pandas方法:
data=pd.read_sql(sql_command,con=conn) 来直接获取结果Dataframe

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^