大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