pythonが登った小説はmysqlデータベースに格納されます


特に、保存するコードの符号化フォーマットは必ずライブラリの符号化フォーマットと同じであることに注意してください.
実際には、テンプレートのような内容があります.
importMySQLdb
conn = MySQLdb.connect(host='127.0.0.1',db='msl',user='root',passwd='zgy 1314',charset='utf-8')cur=conn.cursor()取得したconnデータベースのcursorメソッドによりカーソルを作成
cur.execute()conn.commit()#データベースにデータをコミットconn.close()#データベース接続を閉じる
Hostはホストのipアドレス,dbは自分のデータベースの名前,userは利用者,passwdは自分で設定したパスワード,charsetはライブラリ内の表の符号化方式である.
 
for j in url1:     m_2,m_3 = getContent(j)     hot = "insert into xiaoshuo(title,content) values('%s','%s')"% (m_2, m_3)
このコードは、小説の内容とタイトルをデータベースのテーブルに複数のタイプの値で転送するプロセスです.固定的な書き方:
Insert intoテーブル名(フィールド名1,フィールド名2)values(値a 1,値b 1),(値a 2,値b 2),
まず、データベースとの接続が確立されていることを確認する必要があります.また、いくつかの符号化が一致している問題は難しいです.
 
for x in imglist:     title = re.search(p,x, re.S).group(1)     hot = "insert into user(id,url) values(%d,'%s')"% (k,title)
グループ(1)に関する内容.
正規表現の3つのカッコは、一致結果を3つのグループに分けます.
group()とgroup(0)は、正規表現全体を一致させた結果group(1)は第1のかっこ一致部分をリストし、group(2)は第2のかっこ一致部分をリストし、group(3)は第3のかっこ一致部分をリストする.
長い間解決してきた問題があります.mysqlデータベースに文字を格納するときにIncorrect string valueエラーが発生しました.
解決方法:他の位置に問題がないと思ったら、符号化の問題があるに違いない.
①自分のコード抽出結果がどのような符号化であるかを明らかにするにはprint type()文を用いてクエリを行うことができる.
②自分が格納するコンテンツの符号化方式がデータベース設定の符号化方式と同じであることを保証する.
③異なる場合は、新しいデータベースを作成したり、データベースの設定を変更したりすることができます
 
# -*- coding: utf-8 -*- import re import urllib2 import sys import MySQLdb from bs4 import BeautifulSoup reload(sys) sys.setdefaultencoding('utf-8') conn = MySQLdb.connect(host='127.0.0.1',db='msl',user='root',passwd='zgy 1314',charset='utf 8')cur=conn.cursor()#取得したconnデータベースのcursorメソッドによりカーソルdef getHtml(url):user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} request = urllib2.Request(url=url, headers=headers) response = urllib2.urlopen(request) content1 = response.read().decode('utf-8') soup = BeautifulSoup(content1,"html.parser") ls1 = [] list1 = [] for tag1 in soup.find('div',class_="article_container").find_all('a'): m_1 = tag1.get('href') url1 = str(m_1) list1.append(url1) return list1 def getContent(url1): request = urllib2.Request(url=url1) response = urllib2.urlopen(request) content1 = response.read().decode("gb18030") soup = BeautifulSoup(content1, "html.parser") # print soup for tag2 in soup.find_all('h1',class_="articleH1"): m_2 = tag2.get_text() print m_2 for tag3 in soup.find_all("p"): m_3 = tag3.get_text() print m_3 return m_2,m_3 url = 'http://www.360doc.com/content/17/0217/14/40345358_629710670.shtml' url1 = getHtml(url) for j in url1: m_2,m_3 = getContent(j) hot = "insert into xiaoshuo(title,content) values('%s','%s')"% (m_2, m_3) cur.execute(hot)conn.commit()#データベースにデータをコミットconn.close()#データベース接続を閉じる
コード抽出内容の符号化フォーマットは必ずデータベース符号化フォーマットと同じである