成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

【爬蟲】菜鳥教程,支持翻頁,存儲

Scott / 3142人閱讀

摘要:項目簡介豆瓣相信很多人都爬過,我也把我的方法拿出來交流學(xué)習(xí),我也是菜鳥過來的,不會省略代碼,此教程純屬娛樂,大神勿噴。創(chuàng)建數(shù)據(jù)庫目標(biāo)網(wǎng)頁分析這個教程中,我們需要爬取豆瓣的電影名序號和相應(yīng)的評分。

1、項目簡介

豆瓣相信很多人都爬過,我也把我的方法拿出來交流學(xué)習(xí),我也是菜鳥過來的,不會省略代碼,此教程純屬娛樂,大神勿噴。

2、工具

requests

re

pygal

mysql

Anacond2

3、爬蟲完整代碼
# encoding:UTF-8
import re
import requests
import MySQLdb
from bs4 import BeautifulSoup

headers = {"User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}


def getPage(get_url):
    r=requests.get(get_url)
    response = r.text
    return response
def filterpage():
    pageCode = getPage(get_url)
    pattern = re.compile("(.*?).*?(.*?).*?(.*?)",re.S)
    items = re.findall(pattern,pageCode)
    pageStories = []
    for item in items:
        pageStories.append([item[0].strip(),item[1].strip(),item[2].strip()])
    return pageStories
def save_data():
    Dbdata=filterpage()
    db=MySQLdb.connect(host="localhost",user="root",passwd="******",db="movie",charset="utf8")
    cursor=db.cursor()
    for a in Dbdata:
        id=a[0]
        name=a[1]
        grade=a[2]
        #comment=a[3]
        value=[id,name,grade]
        cursor.execute("insert into movie_info values(%s,%s,%s)",value)
        db.commit()
def main():
    pageStories=filterpage()
    #print pageStories
    for story in pageStories:
        try:
            print u"序號:",story[0],u"電影名:",story[1], u"	評分:", story[2]
        except:
            pass

if __name__ == "__main__":
    get_url = "https://movie.douban.com/top250/"
    i=1
    while i < 11:
        main()
        save_data()
        print u"頁碼",i
        num = i * 25
        get_url = "https://movie.douban.com/top250?start=" + str(num) + "&filter="
        i = i + 1

4、前期準(zhǔn)備

install mysql
我是在windows環(huán)境下跑爬蟲的,用的是MySQL5.7,下載地址:https://dev.mysql.com/downloa...

值得一提的是,mysql的安裝,window版的mysql安裝起來說實話還是比較麻煩的,我裝了很久,沒成功,最后選擇下載壓縮版安裝。安裝完之后,在mysql目錄下創(chuàng)建my.ini配置文件,輸入以下代碼:

[mysqld] 
tmpdir=F:mysql-5.7.18-winx64   # 安裝目錄
datadir=F:mysql-5.7.18-winx64data   # data目錄,沒有data目錄請手動創(chuàng)建
early-plugin-load=""
skip-grant-tables

點擊保存,data目錄是mysql初始化會用到的目錄,一般是空目錄,不然初始化不通過。特別是“ 服務(wù)沒有報告任何錯誤。 請鍵入 NET HELPMSG 3534”錯誤。然后添加mysql的環(huán)境路徑。

cmd輸入:

cd F:mysql-5.7.18-winx64in # 進入bin目錄,不然有可能會報錯
mysqld initialize  # 初始化命令
net start mysql    # 啟動服務(wù)

創(chuàng)建數(shù)據(jù)表,我們需要保存的數(shù)據(jù)有ID,評分grade,還有電影名name。

mysql>create database movie   # 創(chuàng)建movie數(shù)據(jù)庫
mysql>use movie # 
mysql>create table movie_info (id varchar(100),name varchar(100),grade decimal(3,1));
5、目標(biāo)網(wǎng)頁分析

這個教程中,我們需要爬取豆瓣top250的電影名、序號和相應(yīng)的評分。F12分析網(wǎng)頁結(jié)構(gòu)。找到有《肖申克的救贖》的代碼處:

1   # 序號
.
.
.      
肖申克的救贖 # 電影名
.
.
.
9.6  # 評分

ok,往后翻,可以看到剩下的都是這類的結(jié)構(gòu),我們找到規(guī)律了,就可以想辦法,把里面的東西給搞出來。
一般常用的有re模塊和beautifulsoup模塊,我是用re模塊正則匹配,感覺正則更強大一點,漂亮湯模塊用起來簡單,但是速度慢。

6、代碼分析 6.1 爬取頁面代碼
def getPage(get_url):            # 定義一個抓取網(wǎng)頁的方法
    r=requests.get(get_url)      # get到目標(biāo)網(wǎng)頁
    response = r.text
    return response              # 返回抓取到的網(wǎng)頁

爬蟲開始爬,就是給web服務(wù)器一個請求,然后抓取到返回信息。

HTTP 請求方法有 OPTIONS、GET、HEAD、post、PUT、DELETE、TRACE、CONNECT,其中比較常用的有g(shù)et和post,其他的都不常見,判斷請求方式很重要。自行百度。

6.2 頁面代碼處理
def filterpage():              # 頁面處理方法
    pageCode = getPage(get_url)   #傳參
    pattern = re.compile("(.*?).*?(.*?).*?(.*?)",re.S)
    items = re.findall(pattern,pageCode)
    pageStories = []        # 定義一個空數(shù)組,用來存分離出來的數(shù)據(jù)
    for item in items:      # 迭代
        pageStories.append([item[0].strip(),item[1].strip(),item[2].strip()])# 去除空格
    return pageStories

正則表達式,在程序剛開始,我們導(dǎo)入了python的re模塊,這個模塊專門處理正則匹配,詳細(xì)教程點這里

我們用第一個(.*?)非貪婪匹配來匹配序號,接著用.*?貪婪匹配匹配不需要的代碼,往后同樣用非貪婪匹配來匹配我們需要的信息。

接著用strip()方法去除空格。返回得到的字符串pageStories。

6.3 數(shù)據(jù)存儲
def save_data(): 
    Dbdata=filterpage() #傳參
    db=MySQLdb.connect(host="localhost",user="root",passwd="suyu.123",db="movie",charset="utf8") # 鏈接數(shù)據(jù)庫
    cursor=db.cursor() # 定義游標(biāo)
    for a in Dbdata:   # 迭代存儲數(shù)據(jù)
        id=a[0]
        name=a[1]
        grade=a[2]
        value=[id,name,grade]
        cursor.execute("insert into movie_info values(%s,%s,%s)",value) # sql命令存數(shù)據(jù)
        db.commit()   # 別忘記提交變更

python操作mysql,感覺沒啥好講的了。。

6.4主函數(shù)
def main():
    pageStories=filterpage()   # 傳參
    for story in pageStories:  # 迭代打印
        try:
            print u"序號:",story[0],u"電影名:",story[1], u"	評分:", story[2]
        except:
            pass

主函數(shù)主要是用來打印出我們抓取的數(shù)據(jù)。

6.5運行程序
if __name__ == "__main__":
    get_url = "https://movie.douban.com/top250/" # 起始網(wǎng)頁
    i=1
    while i < 11:
        main()                  # 運行主函數(shù)
        save_data()             # 運行存儲函數(shù)
        print u"頁碼",i         # 
        num = i * 25
        get_url = "https://movie.douban.com/top250?start=" + str(num) + "&filter="
        i = i + 1

通過豆瓣top250的頁面分析可以知道,總共有10頁,所以我們設(shè)置i<11,整個豆瓣電影top250的網(wǎng)址很有規(guī)律,第一頁是:https://movie.douban.com/top250,第二頁就是:https://movie.douban.com/top2...,這樣的網(wǎng)頁有規(guī)律,我喜歡,所以我們可以用迭代來表示所有網(wǎng)頁,豆瓣業(yè)界良心啊。

7、運行結(jié)果

GitHub地址:https://github.com/legolas-ze...

還有剩下的svg統(tǒng)計圖,就下次更新吧。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/40694.html

相關(guān)文章

  • pyspider 爬蟲教程(一):HTML 和 CSS 選擇器

    摘要:但是感覺還是需要一篇的教程,不然沒有一個總體的認(rèn)識。修飾器,表示每天會執(zhí)行一次,這樣就能抓到最新的電影了。不過更推薦使用選擇器。既然前端程序員都使用選擇器為頁面上的不同元素設(shè)置樣式,我們也可以通過它定位需要的元素。 雖然以前寫過 如何抓取WEB頁面 和 如何從 WEB 頁面中提取信息。但是感覺還是需要一篇 step by step 的教程,不然沒有一個總體的認(rèn)識。不過,沒想到這個教程居...

    ShevaKuilin 評論0 收藏0
  • node爬蟲快速入門

    摘要:爬蟲初入前端,剛剛接觸,對于耳聞已久的爬蟲非常神往,所以有了這篇文章,項目代碼在文章末尾需求抓取天涯論壇重慶地區(qū)板塊的文章列表信息。 node爬蟲 初入前端,剛剛接觸node,對于耳聞已久的node爬蟲非常神往,所以有了這篇文章,項目代碼在文章末尾 需求 抓取天涯論壇重慶地區(qū)板塊的文章列表信息。 使用工具 node.js superagent(客戶端請求代理模塊) cheerio...

    simon_chen 評論0 收藏0
  • python爬蟲學(xué)習(xí)教程,爬取網(wǎng)易云音樂!

    摘要:其次,使用后,還需要針對做特定處理??吹竭@就可以構(gòu)想一下爬蟲的爬取邏輯了。 運行環(huán)境 我的運行環(huán)境如下: 系統(tǒng)版本 Windows10。 Python版本 Python3.5,推薦使用Anaconda 這個科學(xué)計算版本,主要是因為它自帶一個包管理工具,可以解決有些包安裝錯誤的問題。去Anaconda官網(wǎng),選擇Python3.5版本,然后下載安裝。 IDE 我使用的是PyCharm,是專...

    Olivia 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<