python2.7導入mysqldb

my噶地~~javascript

學習了一段時間爬蟲,瞭解最基本的模塊。要開始鏈接數據庫啦,遇到小問題,隨筆mark。html

爬蟲就是在網頁上解析數據,一開始只能爬到pycharm的顯示欄,高級一點點的有圖形化界面,能夠爬取小說、文字、圖片、小視頻and so on,,java

爬蟲必備模塊之urllib、urllib二、re、beautifulsoup、xpath等等python

有些模塊是python自帶的模塊,如urllib、sys、re等等,可是有些模塊須要在Dos命令裏面進行install,格式"pip install+模塊名"mysql

網頁分爲靜態網頁和動態網頁,二者之間最大的區別大概就是後者須要與服務器進行數據交互,即與數據庫有關聯。正則表達式

前兩個用來解析網絡url,譬如urllib2.openurl("這裏放入須要爬取的url"),注意若是openurl()沒有獲得對應的html,那麼恭喜你,你爬的網站作了反爬蟲。sql

這個時候加上headers能夠很好地解決這個問題。譬如headers={數據庫

'User-Agent':'這個地方注意去你要爬的網址上面找,F12+F5'

}服務器

過濾不須要的信息須要用到正則表達式,最基本的re.compile(「html」)是爲了防止轉義,提升編譯效率。網絡

過來不須要的信息能夠用re.findall(req,html),這樣能夠過濾你要的信息啦,好比標題,正文,甚至圖片。

最近爬了一個小說網,須要將數據存儲到數據庫中,通常都是用mysql。python鏈接數據庫須要安裝數據庫插件python2.x系列的數據庫模塊叫mysqldb,爲了import MySQLdb不報錯,但是讓我惦記了兩天,pip install mysql_python根本行不通!!!安裝了好多沒必要要的插件依舊有問題!!!最好的解決辦法以下:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

重要的網站備份三遍!!在裏面找到名爲"mysql_python-1.2.5-cp27-none-win32.whl"的插件下載,操做以下所示:

!!!專治各類糾結

關於數據庫的鏈接存儲,且看下回分解。

 

最後擺出一個爬取某小說網站的書籍文件,參考學習:

# _*_coding:utf-8 _*_

#爬取小說網站,將數據存入數據庫
#author:yangyang
#datetime:2017.6.2


import urllib2,re
import MySQLdb

domain="http://www.quanshu.net"
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}
def getTypeList(pn=1):
      req=urllib2.Request('http://www.quanshu.net/map/%s.html' %pn)
      req.headers=headers #替換全部頭信息
      #req.add_header()#添加單個頭信息
      res=urllib2.urlopen(req)
      html=res.read().decode('gbk')#decode解碼
      reg=re.compile(r'<a href="(/book/.*?)" target="_blank">(.*?)</a>')
      htmll=re.findall(reg,html)
      return htmll
def getContent(url):
    req=urllib2.Request(domain+url)
    req.headers=headers
    res=urllib2.urlopen(req)
    html=res.read().decode('gbk')
    reg=r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>'
    reg=re.compile(reg)
    return  re.findall(reg,html)

def getNovelcontent(url):
  req=urllib2.Request(domain+url)
  req.headers=headers
  res=urllib2.urlopen(req)
  res=res.read().decode('gbk')
  reg=r'style5\(\);</script>(.*?)<script type="text/javascript">style6\(\);'
  return re.findall(reg,res)[0]

if __name__== '__main__':
    for type in range(1,10):
        for url,title in getTypeList(type):
             for chapter,ztitle in getContent(url):
                  print u'正在爬取----------%s' %ztitle
                  contenturl= getNovelcontent(url.replace('index.html',chapter))
相關文章
相關標籤/搜索