Python爬蟲入門

獲取圖片并存入文件夾中

import urllib.request
response = urllib.request.urlopen('http://placekitten.com/1920/1280')
cat_img = response.read()
with open('cat_1920_1280.jpg','wb')as f:
    f.write(cat_img)

利用有道翻譯

# -*- coding:utf-8 -*- 
import urllib.request
import urllib.parse
import json

content = input("請輸入要翻譯的內(nèi)容:")
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict2.index'

head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' 

data = {}
data['type']='AUTO'
data['i']=content
data['doctype']='json'
data['xmlVersion']='1.8'
data['keyfrom']='fanyi.web'
data['ue']='UTF-8'
data['action']='FY_BY_CLICKBUTTON'
data['typoResult']='true'
data = urllib.parse.urlencode(data).encode('utf_8')

req = urllib.request.Request(url,data,head)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')

target = json.loads(html)
print("翻譯結(jié)果:%s"%(target['translateResult'][0][0]['tgt']))

Python爬蟲將煎蛋網(wǎng)上的圖片全部下載到本地

# -*- coding:utf-8 -*- 
import urllib.request
import os

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')
    response = urllib.request.urlopen(url)
    html = response.read()
    return html
    
def get_page(url):
    html = url_open(url).decode('utf-8')
    a = html.find('current-comment-page')+23
    b = html.find(']',a)#從a位置開始找到位置坐標(biāo)
    return html[a:b]#頁碼
    
def find_imgs(url):
    html = url_open(url).decode('utf-8')
    img_address = []
    a = html.find('img src=')
    while a!=-1:
        b = html.find('.jpg',a,a+255)#從a開始槐瑞,到限定結(jié)束范圍a+255
        if b != -1:
            img_address.append('http:'+html[a+9:b+4])
        else:
            b = a+9
        a = html.find('img src=',b)  
    return img_address

def save_imgs(folder,img_address):
    for each in img_address:
        filename = each.split('/')[-1] #取最后一個即圖片名
        with open(filename,'wb') as f:
            img = url_open(each)
            f.write(img)
            
def download_mm(folder = 'ooxx',pages=10):
    os.mkdir(folder)
    os.chdir(folder)
    
    url = "http://jandan.net/ooxx"
    page_num = int(get_page(url))
    
    for i in range(pages):
        page_num -= i
        page_url = url+'/page-'+str(page_num)+'#comments'
        img_address = find_imgs(page_url)
        save_imgs(folder,img_address)
        
if __name__ =='__main__':
    download_mm()

Python爬蟲將貼吧上的圖片全部下載到本地

# -*- coding:utf-8 -*- 毙替、
import urllib.request
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')
    response = urllib.request.urlopen(url)
    html = response.read()
    return html

def get_img(html):
    p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'
    imglist = re.findall(p, str(html))
    for each in imglist:
        filename = each.split("/")[-1]
        urllib.request.urlretrieve(each, filename, None)
if __name__ == '__main__':
    url = 'http://tieba.baidu.com/p/3563409202'
    get_img(url_open(url))

爬豆瓣電影TOP250伪嫁,參考

import pymysql
import requests
from bs4 import BeautifulSoup


#%d用作數(shù)字占位
baseUrl = "https://movie.douban.com/top250?start=%d&filter="   
def get_movies(start):
    url = baseUrl % start
    lists = []
    html = requests.get(url)
    soup = BeautifulSoup(html.content, "html.parser")# BeautifulSoup解析頁面內(nèi)容
    items = soup.find("ol", "grid_view").find_all("li")# 獲取所有的電影內(nèi)容
    for i in items:
        movie = {}      # 臨時存取電影的數(shù)據(jù)
        movie["rank"] = i.find("em").text   # 電影排行榜
        movie["link"] = i.find("div","pic").find("a").get("href")   # 電影詳情頁鏈接
        movie["poster"] = i.find("div","pic").find("a").find('img').get("src")  # 電影海報地址
        movie["name"] = i.find("span", "title").text    # 電影名字
        movie["score"] = i.find("span", "rating_num").text  # 電影評分
        movie["other"] = i.find("span", "other").text.replace('/','').replace('    ','/')  # 電影別名
        movie["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else "" # 某些電影沒有點評,沒有就設(shè)為空
        movie["comment_num"] = i.find("div", "star").find_all('span')[3].text # 電影評論人數(shù)
        movie["detail"] = i.find("div", "bd").find("p", "").text # 電影詳情
        lists.append(movie) # 保存到返回數(shù)組中
    return lists

if __name__ == "__main__":
     # 連接數(shù)據(jù)庫,需指定charset否則可能會報錯
    db = pymysql.connect(host="localhost",user="root",password="root",db="new_schema",charset="utf8mb4")
    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS movies")# 如果表存在則刪除
    # 創(chuàng)建表sql語句
    createTab = """CREATE TABLE movies(
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        rank VARCHAR(4) NOT NULL,
        link VARCHAR(50) NOT NULL,
        poster VARCHAR(100) NOT NULL,
        score VARCHAR(4) NOT NULL,
        other VARCHAR(100) NOT NULL,
        quote VARCHAR(50),
        detail VARCHAR(300) NOT NULL,
        comment_num VARCHAR(100) NOT NULL
    )"""
    cursor.execute(createTab)
    for start in range(0,250,25):
        lists = get_movies(start)# 獲取提取到數(shù)據(jù)
        for i in lists:
             # 插入數(shù)據(jù)到數(shù)據(jù)庫sql語句,%s用作字符串占位
            sql = "INSERT INTO `movies`(`name`,`rank`,`link`,`poster`,`score`,`other`,`quote`,`detail`,`comment_num`) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
            try:
                cursor.execute(sql, (i["name"], i["rank"], i["link"], i["poster"], i["score"], i["other"], i["quote"], i["detail"], i["comment_num"]))
                db.commit()
                print(i["name"]+" is success")
            except:
                db.rollback()
    db.close()

將豆瓣爬下來的電影詳情按年份、國家或地區(qū)姐扮、類型等分好并寫入MySQL數(shù)據(jù)庫

import pymysql
import requests
from bs4 import BeautifulSoup
import re

#%d用作數(shù)字占位
baseUrl = "https://movie.douban.com/top250?start=%d&filter="   
def get_movies(start):
    url = baseUrl % start
    lists = []
    html = requests.get(url)
    soup = BeautifulSoup(html.content, "html.parser")# BeautifulSoup解析頁面內(nèi)容
    items = soup.find("ol", "grid_view").find_all("li")# 獲取所有的電影內(nèi)容
    for i in items:
        movie = {}      # 臨時存取電影的數(shù)據(jù)
        movie["rank"] = i.find("em").text   # 電影排行榜
        movie["link"] = i.find("div","pic").find("a").get("href")   # 電影詳情頁鏈接
        movie["poster"] = i.find("div","pic").find("a").find('img').get("src")  # 電影海報地址
        movie["name"] = i.find("span", "title").text    # 電影名字
        movie["score"] = i.find("span", "rating_num").text  # 電影評分
        movie["other"] = i.find("span", "other").text.replace('/','').replace('    ','/')  # 電影別名
        movie["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else "" # 某些電影沒有點評,沒有就設(shè)為空
        movie["comment_num"] = i.find("div", "star").find_all('span')[3].text # 電影評論人數(shù)
        movie["detail"] = i.find("div", "bd").find("p", "").text # 電影詳情
        lists.append(movie) # 保存到返回數(shù)組中
    return lists


if __name__ == "__main__":
     # 連接數(shù)據(jù)庫衣吠,需指定charset否則可能會報錯
    db = pymysql.connect(host="localhost",user="root",password="root",db="new_schema",charset="utf8mb4")
    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS movies")# 如果表存在則刪除
    # 創(chuàng)建表sql語句
    createTab = """CREATE TABLE movies(
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        rank VARCHAR(4) NOT NULL,
        link VARCHAR(50) NOT NULL,
        poster VARCHAR(100) NOT NULL,
        score VARCHAR(4) NOT NULL,
        other VARCHAR(100) NOT NULL,
        quote VARCHAR(50),
        detail VARCHAR(300) NOT NULL,
        time VARCHAR(300) NOT NULL,
        country VARCHAR(300) NOT NULL,
        type VARCHAR(300) NOT NULL,
        drictor_artist VARCHAR(300) NOT NULL,
        comment_num VARCHAR(100) NOT NULL
    )"""
    cursor.execute(createTab)
    for start in range(0,250,25):
        lists = get_movies(start)# 獲取提取到數(shù)據(jù)
        data=[]
        for i in lists:
             action = i["detail"]
             remove=re.compile(r'                            |\n|</br>|\.*')
             bd=re.sub(remove,"",action)
             bd=re.sub('<br>',"   ",bd)#去掉<br>
             bd=re.sub('/',"   ",bd)#替換/
             words=bd.split("   ")
             for s in words:
                  if len(s)!=0 and s!=' ':#去掉空白內(nèi)容
                        data.append(s)
             i["time"] = data[-3][-5:]
             i["country"] = data[-2]
             i["type"] = data[-1]
             i["drictor_artist"] = data[0]
             # 插入數(shù)據(jù)到數(shù)據(jù)庫sql語句茶敏,%s用作字符串占位
             sql = "INSERT INTO `movies`(`name`,`rank`,`link`,`poster`,`score`,`other`,`quote`,`detail`,`time`,`country`,`type`,`drictor_artist`,`comment_num`) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
             try:
                 cursor.execute(sql, (i["name"], i["rank"], i["link"], i["poster"], i["score"], i["other"], i["quote"], i["detail"], i["time"], i["country"], i["type"], i["drictor_artist"], i["comment_num"]))
                 db.commit()
                 print(i["name"]+" is success")
             except:
                 db.rollback()
    db.close()

可以將TOP250電影的年份畫出來

豆瓣電影TOP250年代分布
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缚俏,隨后出現(xiàn)的幾起案子惊搏,更是在濱河造成了極大的恐慌,老刑警劉巖忧换,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恬惯,死亡現(xiàn)場離奇詭異,居然都是意外死亡亚茬,警方通過查閱死者的電腦和手機酪耳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刹缝,“玉大人碗暗,你說我怎么就攤上這事∩液唬” “怎么了言疗?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颂砸。 經(jīng)常有香客問我噪奄,道長死姚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任勤篮,我火速辦了婚禮知允,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叙谨。我一直安慰自己,他們只是感情好保屯,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布手负。 她就那樣靜靜地躺著,像睡著了一般姑尺。 火紅的嫁衣襯著肌膚如雪竟终。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天切蟋,我揣著相機與錄音统捶,去河邊找鬼。 笑死柄粹,一個胖子當(dāng)著我的面吹牛喘鸟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驻右,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼什黑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堪夭?” 一聲冷哼從身側(cè)響起愕把,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎森爽,沒想到半個月后恨豁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡爬迟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年橘蜜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雕旨。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡扮匠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凡涩,到底是詐尸還是另有隱情棒搜,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布活箕,位于F島的核電站力麸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜克蚂,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一闺鲸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧埃叭,春花似錦摸恍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至类早,卻和暖如春媚媒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涩僻。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工缭召, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逆日。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓嵌巷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親室抽。 傳聞我的和親對象是個殘疾皇子晴竞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)知識 HTTP協(xié)議 我們?yōu)g覽網(wǎng)頁的瀏覽器和手機應(yīng)用客戶端與服務(wù)器通信幾乎都是基于HTTP協(xié)議,而爬蟲可以看作是...
    腩啵兔子閱讀 1,490評論 0 17
  • 原文地址:靜覓 ? Python爬蟲入門一之綜述 大家好哈狠半,最近博主在學(xué)習(xí)Python噩死,學(xué)習(xí)期間也遇到一些問題,獲...
    IT程序獅閱讀 593評論 0 4
  • 大家好哈神年,最近博主在學(xué)習(xí)Python已维,學(xué)習(xí)期間也遇到一些問題,獲得了一些經(jīng)驗已日,在此將自己的學(xué)習(xí)系統(tǒng)地整理下來垛耳,如果...
    xmsumi閱讀 385評論 0 0
  • 說明:本篇主要敘述第一個需求的實現(xiàn),第二個需求的實現(xiàn)參見python爬蟲入門 實戰(zhàn)(六)---用webdriver...
    王雨城閱讀 7,537評論 5 41
  • 把以前寫的爬蟲代碼整理成教程飘千,方便以后查閱堂鲜,可以爬點感興趣的東西玩一玩。 1.運行環(huán)境及安裝: 1.運行環(huán)境 默認(rèn)...
    王書劍閱讀 716評論 0 3