特別需要注意的是需要存的**的編碼格式一定要與庫的編碼格式相同。
其實還是相當於有乙個類似模板的內容:
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...