不吃辣的禾小白 2020-12-29 17:43 采纳率: 50%
浏览 7
已采纳

怎么能够把数据爬取出来,我搞错了啥?

import pymysql
conn=pymysql.connect(host='127.0.0.1',port=3306,db='test',passwd='NAVJ-W56S-3YUU-MVHV',user='root',charset='utf8')
cursor=conn.cursor()
sql='''create table if not exists jin(date varchar(20),week varchar(20),
weather varchar(20),low varchar(20),high varchar(20)) charset=utf8'''
cursor.execute(sql)
cursor.execute('show tables')

import requests
from lxml import html
url='https://www.tianqi.com/jintaiqu/15/'
html_code=requests.get(url=url)
html_code.encoding='utf-8'
html_text=html_code.text
etree_tools=html.etree
format_html=etree_tools.HTML(html_text)
li_lists=format_html.xpath('//*[@class="weaul"]/li/a')
for node in li_lists:
    da=node.xpath('./div[1]/span[1]/text()')
    wee=node.xpath('./div[1]/span[2]/text()')
    wea=node.xpath('./div[3]/text()')
    lo=node.xpath('./div[4]/span[1]/text()')
    hig=node.xpath('./div[4]/span[2]/text()')
    print(da)
    print(wee)
    print(wea)
    print(lo)
    print(hig)
for k in range(len(da)):
    sql="insert into jin (date,week,weather,low,high) values(%s,%s,%s,%s,%s)"
    cursor.execute(sql,(da[k],wee[k],wea[k],lo[k],hig[k]))
conn.commit()
data=cursor.execute('select * from jin')
data=cursor.fetchall()
print(data)
conn.close()
  • 写回答

1条回答 默认 最新

  • storm_huang 2020-12-29 17:54
    关注

    da、wee、lo、hig这几个参数没在for循环定义,在li_lists的循环外使用。可以把插入数据库操作放到li_lists的循环内。或者把这几个变量在循环外定义成数组,循环把数据加入到数组中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境