国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

(轉)Python3爬取豆瓣電影保存到MySQL數據庫

nevermind / 3189人閱讀

摘要:行代碼實現爬取豆瓣電影排行榜代碼基于,用到的類庫有標題文字通過偽造請求頭或設置代理等方式獲取頁面內容,參考文檔對頁面進行解析,提取數據,參考文檔版本中用于操作數據庫,中則使用,安裝用到的幾個類庫分析豆瓣電影頁面頁面分析爬取數據之前,我們都需

48行代碼實現Python3爬取豆瓣電影排行榜
代碼基于python3,用到的類庫有:

標題文字

requests:通過偽造請求頭或設置代理等方式獲取頁面內容,參考文檔
BeautifulSoup:對頁面進行解析,提取數據,參考文檔
PyMySQL:python3版本中用于操作MySQL數據庫,python2中則使用mysqldb,Github

pip安裝用到的幾個類庫:

pip install requests
pip install bs4
pip install pymysql
分析豆瓣電影頁面
頁面分析:
爬取數據之前,我們都需要對頁面進行分析,看我們可以從中提取到哪些數據,從下圖我們看到豆瓣電影top250的頁面結構,我們可以從中提取出排行榜(rank)、電影名字(name)、電影詳情頁鏈接(link)、電影海報(poster)、電影評分(score)、電影評論(quote)等,我在圖中進行了標注

URL分析:
通過點擊分頁我們可以發現URL的格式為:https://movie.douban.com/top2...
其中num表示25的倍數的數字,最小是0也就是第一頁,最大為225也就是最后一頁,這可以作為我們爬取頁面的限制條件,filter為過濾條件這里可不用管

代碼
引入類庫:

import pymysql
import requests
from bs4 import BeautifulSoup
定義爬取鏈接,%d用作數字占位:

baseUrl = "https://movie.douban.com/top250?start=%d&filter="
定義爬取數據方法:

def get_movies(start):

url = baseUrl % start   # 拼接爬取鏈接
lists = []              # 存儲此頁面的電影數據
html = requests.get(url)    # requests請求頁面內容,由于豆瓣沒有限制爬取,所以不用設置偽請求頭
soup = BeautifulSoup(html.content, "html.parser")   # BeautifulSoup解析頁面內容
items = soup.find("ol", "grid_view").find_all("li") # 獲取所有的電影內容
for i in items:
    movie = {}      # 臨時存取電影的數據
    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["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else "" # 某些電影沒有點評,沒有就設為空
    lists.append(movie) # 保存到返回數組中
return lists

連接數據庫并創建數據表:

連接數據庫,需指定charset否則可能會報錯

db = pymysql.connect(host="localhost",user="root",password="root",db="test",charset="utf8mb4")
cursor = db.cursor() # 創建一個游標對象
cursor.execute("DROP TABLE IF EXISTS movies") # 如果表存在則刪除

創建表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,
quote VARCHAR(50)

)"""
cursor.execute(createTab) # 執行創建數據表操作
......
db.close() # 關閉數據庫
將提取到的數據存儲到數據表中:

lists = get_movies(start) # 獲取提取到數據

for i in lists:
    # 插入數據到數據庫sql語句,%s用作字符串占位
    sql = "INSERT INTO `movies`(`name`,`rank`,`link`,`poster`,`score`,`quote`) VALUES(%s,%s,%s,%s,%s,%s)"
    try:
        cursor.execute(sql, (i["name"], i["rank"], i["link"], i["poster"], i["score"], i["quote"]))
        db.commit()
        print(i[0]+" is success")
    except:
        db.rollback()
start += 25

完整代碼:

import pymysql
import requests
from bs4 import BeautifulSoup
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")
items = soup.find("ol", "grid_view").find_all("li")
for i in items:
    movie = {}
    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["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else ""
    lists.append(movie)
return lists

if name == "__main__":

db = pymysql.connect(host="localhost",user="root",password="root",db="test",charset="utf8mb4")

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43503.html

相關文章

  • scrapy入門教程——爬取豆瓣電影Top250!

    摘要:注意爬豆爬一定要加入選項,因為只要解析到網站的有,就會自動進行過濾處理,把處理結果分配到相應的類別,但偏偏豆瓣里面的為空不需要分配,所以一定要關掉這個選項。 本課只針對python3環境下的Scrapy版本(即scrapy1.3+) 選取什么網站來爬取呢? 對于歪果人,上手練scrapy爬蟲的網站一般是官方練手網站 http://quotes.toscrape.com 我們中國人,當然...

    senntyou 評論0 收藏0
  • 爬取豆瓣電影top250提取電影分類進行數據分析

    摘要:標簽空格分隔爬蟲一爬取網頁,獲取需要內容我們今天要爬取的是豆瓣電影頁面如下所示我們需要的是里面的電影分類,通過查看源代碼觀察可以分析出我們需要的東西。 標簽(空格分隔):python爬蟲 一、爬取網頁,獲取需要內容 我們今天要爬取的是豆瓣電影top250頁面如下所示:showImg(https://segmentfault.com/img/remote/1460000006877726...

    Mertens 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • 80行代碼爬取豆瓣Top250電影信息并導出csv及據庫

    摘要:查看源碼下載頁面并處理提取數據觀察該網站結構可知該頁面下所有電影包含在標簽下。使用語句獲取該標簽在標簽中遍歷每個標簽獲取單個電影的信息。以電影名字為例清洗數據其余部分詳見源碼頁面跳轉檢查后頁標簽。 查看源碼 1 下載頁面并處理 DOWNLOAD_URL = http://movie.douban.com/top250/ html = requests.get(url).text tr...

    galaxy_robot 評論0 收藏0

發表評論

0條評論

nevermind

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<