日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】

發布時間:2023/12/10 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 爬取時間:2019-09-23
  • 爬取難度:★☆☆☆☆☆
  • 請求鏈接:https://maoyan.com/board/4
  • 爬取目標:貓眼電影 TOP100 的電影名稱、排名、主演、上映時間、評分、封面圖地址,數據保存為 CSV 文件
  • 涉及知識:請求庫 requests、解析庫 lxml、Xpath 語法、CSV 文件儲存
  • 完整代碼:https://github.com/TRHX/Python3-Spider-Practice/tree/master/BasicTraining/maoyan-top100
  • 其他爬蟲實戰代碼合集(持續更新):https://github.com/TRHX/Python3-Spider-Practice
  • 爬蟲實戰專欄(持續更新):https://itrhx.blog.csdn.net/article/category/9351278

文章目錄

  • 【1x00】循環爬取網頁模塊
  • 【2x00】解析模塊
  • 【3x00】數據儲存模塊
  • 【4x00】完整代碼
  • 【4x00】數據截圖


【1x00】循環爬取網頁模塊

觀察貓眼電影TOP100榜,請求地址為:https://maoyan.com/board/4

每頁展示10條電影信息,翻頁觀察 url 變化:

第一頁:https://maoyan.com/board/4

第二頁:https://maoyan.com/board/4?offset=10

第三頁:https://maoyan.com/board/4?offset=20

一共有10頁,利用一個 for 循環,從 0 到 100 每隔 10 取一個值拼接到 url,實現循環爬取每一頁

def index_page(number):url = 'https://maoyan.com/board/4?offset=%s' % numberresponse = requests.get(url=url, headers=headers)return response.textif __name__ == '__main__':for i in range(0, 100, 10):index = index_page(i)

【2x00】解析模塊

定義一個頁面解析函數 parse_page(),使用 lxml 解析庫的 Xpath 方法依次提取電影排名(ranking)、電影名稱(movie_name)、主演(performer)、上映時間(releasetime)、評分(score)、電影封面圖 url(movie_img)

通過對主演部分的提取發現有多余的空格符和換行符,循環 performer 列表,使用 strip() 方法去除字符串頭尾空格和換行符

電影評分分為整數部分和小數部分,依次提取兩部分,循環遍歷組成一個完整的評分

最后使用 zip() 函數,將所有提取的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表

def parse_page(content):tree = etree.HTML(content)# 電影排名ranking = tree.xpath("//dd/i/text()")# 電影名稱movie_name = tree.xpath('//p[@class="name"]/a/text()')# 主演performer = tree.xpath("//p[@class='star']/text()")performer = [p.strip() for p in performer]# 上映時間releasetime = tree.xpath('//p[@class="releasetime"]/text()')# 評分score1 = tree.xpath('//p[@class="score"]/i[@class="integer"]/text()')score2 = tree.xpath('//p[@class="score"]/i[@class="fraction"]/text()')score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]# 電影封面圖movie_img = tree.xpath('//img[@class="board-img"]/@data-src')return zip(ranking, movie_name, performer, releasetime, score, movie_img)

【3x00】數據儲存模塊

定義一個 save_results() 函數,將所有數據保存到 maoyan.csv 文件

def save_results(result):with open('maoyan.csv', 'a') as fp:writer = csv.writer(fp)writer.writerow(result)

【4x00】完整代碼

# ============================================= # --*-- coding: utf-8 --*-- # @Time : 2019-09-23 # @Author : TRHX # @Blog : www.itrhx.com # @CSDN : https://blog.csdn.net/qq_36759224 # @FileName: maoyan.py # @Software: PyCharm # =============================================import requests from lxml import etree import csvheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' }def index_page(number):url = 'https://maoyan.com/board/4?offset=%s' % numberresponse = requests.get(url=url, headers=headers)return response.textdef parse_page(content):tree = etree.HTML(content)# 電影排名ranking = tree.xpath("//dd/i/text()")# 電影名稱movie_name = tree.xpath('//p[@class="name"]/a/text()')# 主演performer = tree.xpath("//p[@class='star']/text()")performer = [p.strip() for p in performer]# 上映時間releasetime = tree.xpath('//p[@class="releasetime"]/text()')# 評分score1 = tree.xpath('//p[@class="score"]/i[@class="integer"]/text()')score2 = tree.xpath('//p[@class="score"]/i[@class="fraction"]/text()')score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]# 電影封面圖movie_img = tree.xpath('//img[@class="board-img"]/@data-src')return zip(ranking, movie_name, performer, releasetime, score, movie_img)def save_results(result):with open('maoyan.csv', 'a') as fp:writer = csv.writer(fp)writer.writerow(result)if __name__ == '__main__':print('開始爬取數據...')for i in range(0, 100, 10):index = index_page(i)results = parse_page(index)for i in results:save_results(i)print('數據爬取完畢!')

【4x00】數據截圖

總結

以上是生活随笔為你收集整理的Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线视频 一区二区 | 污污视频网站免费观看 | 男人的天堂2018 | 啪啪小视频 | 国产男女猛烈无遮挡免费视频 | 久久影音| 男人猛吃奶女人爽视频 | 国产又黄又湿 | 羞羞动漫免费观看 | 波多野结衣视频观看 | 国产黄a三级三级看三级 | 奇米影视一区二区三区 | 爱逼综合网| 欧美性大战久久久久久久蜜桃 | 国产乱码在线观看 | 色一情一区二区三区 | 日本免费黄网站 | 毛片免费在线观看视频 | 九九九免费 | 欧美激情性生活 | 波多野结衣视频网站 | 无码人妻丰满熟妇区五十路 | 巨胸大乳www视频免费观看 | 插插久久 | 成人欧美精品 | 欧美精品在欧美一区二区 | 亚洲天堂影院 | 蓝牛av| 欧洲综合色 | 一本色道久久加勒比精品 | 美女扒开内看个够网站 | 熊猫电影yy8y全部免费观看 | 黄色片毛片 | 在线观看免费av网址 | www.白浆| 中出在线 | 狠狠插综合 | 欧美xxx性 | 极品三级| 97精品人妻一区二区三区香蕉 | 男女插孔视频 | 国产一级一区 | 五月天激情影院 | 欧美99热| 国产黄色91 | 韩日成人 | 色播在线视频 | 国产精品国产三级国产三级人妇 | 日日操夜夜操视频 | 四虎成人在线 | 三区在线视频 | 朝鲜一级黄色片 | 欧美一区二区在线视频观看 | 日本国产精品视频 | 国产乱码在线 | 日本三级免费网站 | 性――交――性――乱睡觉 | 一区二区三区四区高清视频 | 免费视频日韩 | 黄a视频| 国产操女人 | 比利时xxxx性hd极品 | 中日韩午夜理伦电影免费 | 国产精品3区 | 日本一区二区三区免费看 | 思思久久精品 | 激情五月在线 | 久久99国产精品一区 | 性一交一乱一精一晶 | 精品国产制服丝袜高跟 | 亚洲少妇30p | 三级在线免费 | 上原亚衣av一区二区三区 | 在线播放无码后入内射少妇 | 青青青国产精品一区二区 | 免费欧美一级片 | 91精品视频在线免费观看 | 国产成人精品在线播放 | 午夜一区二区三区免费观看 | 国产黄色片免费在线观看 | 色成人亚洲 | 久青草免费视频 | 一女被多男玩喷潮视频 | 久久男人的天堂 | 色综合久久久久无码专区 | 新香蕉视频 | 日本成人在线一区 | 伊人丁香 | 成年人免费大片 | 欧美人与动物xxxxx | 成人一二区 | 毛片视频免费 | 亚洲永久免费精品 | 裸体一区二区 | 69av网站| 女优色图 | 亚欧乱色 | 国产主播99 | 91亚洲国产成人精品一区二区三 |