账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    保存到mysql数据库没反应,打印时正常的但是没插入任何数据,写入文件也没用
    42
    0
    #-*- conding:utf-8 -*-
    import requests,re,pymysql
    from pyquery import PyQuery as pq
    
    
    url_index = ['http://finance.eastmoney.com/news/cgnjj_{}.html'.format(pages) for pages in range(1,2)]
    
    def index_content(url_index,title=0,time=0):
            #print('起始页:' + url_index)
            index_req = requests.get(url_index,timeout = 10)
            index_req.encoding = 'utf-8'
            index_content = index_req.text
            content_url = re.findall('<div class="text text-no-img">.*?<p class="title">.*?<a href="(.*?)" target="_blank">',index_content,re.S)
            title = re.search('<p class="title">.*?<a href=".*?" target="_blank">(.*?)</a>',index_content,re.S).group(1)
            time = re.search('<p class="time">(.*?)</p>',index_content,re.S).group(1).replace("年", "-").replace("月", "-").replace("日", "")
            #time = time_content
            #re.sub(".", "", title)
            #print('标题:' + title)
            #print('时间:' + time)
            return content_url
            
    def content(content_url):
            content_req = requests.get(content_url,timeout = 10)
            content_req.encoding = 'utf-8'
            content = content_req.text
            title = re.search('<h1>(.*?)</h1>',content,re.S).group(1)
            time = re.search('<div class="time">(.*?)</div>',content,re.S).group(1).replace("年", "-").replace("月", "-").replace("日", "")
            sources = re.search('<div class="source">.*?<span>来源:</span>(.*?)</div>',content,re.S).group(1)
            content_content = re.search('<!--文章主体-->(.*?)<!--责任编辑-->',content,re.S).group(1)
            pic = re.findall('''.*?src="https://z1.dfcfw.com(.*?)"''',content_content,re.S)#.sub('.*?same.*?','',content_content)
            content_body = {'title:':title,
                            'time:':time,
                            'source:':sources,
                            'content:':content_content,
                            'pic:':pic
                
            }
    #         print('网址:' + content_url)
    #         print ('标题:' + title)
    #         print ('时间:' + time)
    #         print ('来源:' + source)
    #         print ('内容:' + content_content )
    #         print (pic)
            print(type(title))
            return content_body
            
    def save_sql(content_body):
        try:
            db = pymysql.connect("localhost","root","root","test" )
            cursor = db.cursor()
            #sql = """INSERT INTO test(title,source_time, source, content_body, pageurl,pic)VALUES (title,time,source,content_content,content_url,pic)"""
            # 执行sql语句
            sql = """INSERT INTO test(title,source_time, sources, content_body, pageurl,pic)VALUES (%s,%s,%s,%s,%s,%s)""" 
    # 执行 sql 语句 
            cursor.execute(sql,(title,time,sources,content_content,content_url,pic))
            #cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # 如果发生错误则回滚
            db.rollback()
            # 关闭数据库连接
            db.close()
    
    def save_csv(con):
        with open('C:\\Users\\Administrator\\Desktop\\finance.csv','wb+') as f: #wb为以二进制方式打开
            con = str.encode('utf-8')
            f.write(con)
            f.close()
    
    for url_list in url_index:
        content_url = index_content(url_list,title=0,time=0)
        for con_url in content_url:
            cons = content(con_url)
            print(cons)
            save_sql(cons)
    #         for con in cons:
    #             #print(con)
    #             save_csv(con)
            #save_sql(con)
    

    运行没报错,也能正常打印输出,但是就是保存不到数据库...而且保存到文件的时候,老是提示类型不对,字典、元组、字符串都不行,帮忙看下..

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 水木皿 普通会员 1楼

      这个问题可能有几种原因,以下是一些可能的解决方案:

      1. 数据库连接问题:确保你已经正确地创建了数据库连接。如果你使用的是MySQL Workbench,你需要打开"连接"菜单,然后选择"新的连接"。然后输入正确的数据库名、用户名、密码和主机名。

      2. 表格不存在:如果你尝试插入的数据不在你的表中,你将无法插入数据。你需要确保你有该表的定义。

      3. 缺少约束:如果你的表中缺少约束,如主键,那么你将无法插入数据。你需要在表的定义中添加相应的约束。

      4. SQL语句问题:如果你的SQL语句有问题,比如语法错误或SQL注入,你将无法插入数据。你需要检查你的SQL语句,确保它没有语法错误。

      5. 文件打开问题:如果你尝试将数据写入文件,但是文件无法打开,那么你可能需要检查你的文件路径和权限。

      6. 数据库文件问题:如果你的数据库文件被破坏或损坏,你将无法写入文件。你需要检查你的数据库文件,并尝试修复它。

      如果你仍然无法解决问题,你可能需要联系数据库管理员或MySQL专家进行进一步的帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部