python爬取的小說存入mysql資料庫

2021-08-09 15:47:09 字數 2851 閱讀 1303

特別需要注意的是需要存的**的編碼格式一定要與庫的編碼格式相同。

其實還是相當於有乙個類似模板的內容:

import

mysqldb

conn = mysqldb.connect(host='127.0.0.1', db='msl', user='root', passwd='zgy1314', 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(值a1,值b1), (值a2,值b2),

首先就是需要確保與資料庫已經建立連線,還有就是一些編碼一致問題比較難處理些。

for x in imglist:

title = re.search(p,x, re.s).group(1)

hot = "insert into user(id,url) values(%d,'%s')" % (k,title)

涉及到乙個group(1)的內容。

正規表示式中的三組括號把匹配結果分成三組

group() 同group(0)就是匹配正規表示式整體結果group(1) 列出第乙個括號匹配部分,group(2) 列出第二個括號匹配部分,group(3) 列出第三個括號匹配部分。

解決方法:

如果覺得其他位置都沒有問題,那一定是存在編碼問題。

①弄清自己的**爬取結果是什麼編碼,可以使用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='zgy1314', charset='utf8')

cur = conn.cursor() # 通過獲取到的conn資料庫的cursor方法建立游標

def gethtml(url):

user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'

headers =

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)

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 = ''

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() # 關閉資料庫連線

**爬取內容的編碼格式一定要與資料庫編碼格式相同

Python爬取小說

感覺這個夠蛋疼的,因為你如果正常寫的話,前幾次執行沒問題,之後你連 都沒改,再執行就出錯了。其實這可能是網路請求失敗,或者有反爬蟲的東西吧。但這就會讓你寫的時候非常苦惱,所以這這東西,健壯性及其重要!import requests from bs4 import beautifulsoup impo...

python 爬取小說

前些天突然想看一些 可能是因為壓力大,所以就要有補償機制吧。為了節省流量,就想著把內容爬下來,然後就可以在路上看了。於是有了下面的指令碼。usr bin env python coding utf 8 import requests from lxml import etree 為了解決unicod...

python爬取小說

一 準備 安裝 requests pyquery庫 二 使用 定義了search類 初始化時傳入 第一章url 和 名即可 再呼叫all content方法即可 coding utf8 import re import requests from requests.exceptions import...