案例實現
需求:要爬取豆瓣top250的電影資訊資料(標題 評分 引言 詳情頁的url) 10頁的資料
都要爬取 並寫入到csv檔案中
第一頁
第二頁
第三頁
第四頁
一共是250條 25頁
分析:(page-1) * 25
總結 第乙個 str格式化的運用
解決辦法 先是找規律 進行格式化的替換
doubanurl = ''
s1 = '鋼鐵俠'
s2 = '蜘蛛俠'
r = f'hello,'
print(r)
s = 'i like {}' # str.format()
w = s.format('python')
print(w)
第二個 xpath語法的運用
第一步 先生成乙個element物件
第二步 用xpath進行導航
第三個 csv檔案的儲存
第四個 小細節 例如 非空判斷
# 非布林值判斷 只要不是空性的 統統代表是true 反之 空性 () {} none 0...
if quote:
quote = quote[0]
else:
quote =''
douban.py
# @ time : 2021/2/25 12:19
# @ author : ellen
import requests
from lxml import etree
import csv
# headers =
## response = requests.get('', headers=headers)
# response.encoding = 'utf-8'
# # headers = response.request.headers # 請求頭資訊
# print(response.text)
# print(headers)
# 第一步 目標**
doubanurl =
''# 第二步 發起請求獲取響應結果
defgetsource
(url)
: headers =
response = requests.get(url, headers=headers)
response.encoding =
'utf-8'
return response.text
# 第三步 解析資料 電影的名字 評分 引言 詳情頁的url
defgeteveryitem
(source)
: html_element = etree.html(source)
movieitemlist = html_element.xpath(
"//div[@class='info']"
)# 定義乙個空的列表 儲存電影資料 [, ]
movielist =
for eachmovie in movieitemlist:
# 定義乙個字典儲存電影資訊 k-v
moviedict =
title = eachmovie.xpath(
'div[@class="hd"]/a/span[@class="title"]/text()'
)# 主標題
othertitle = eachmovie.xpath(
'div[@class="hd"]/a/span[@class="other"]/text()'
)# 副標題
link = eachmovie.xpath(
'div[@class="hd"]/a/@href')[
0]# 詳情頁url
star = eachmovie.xpath(
'div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[
0]# 評分
quote = eachmovie.xpath(
'div[@class="bd"]/p[@class="quote"]/span/text()'
)# 引言 名句
# 非布林值判斷 只要不是空性的 統統代表是true 反之 空性 () {} none 0...
if quote:
quote = quote[0]
else
: quote =
'' moviedict[
'title']=
''.join(title+othertitle)
# 主標題+副標題
moviedict[
'url'
]= link # 詳情頁url
moviedict[
'star'
]= star # 評分
moviedict[
'quote'
]= quote # 引言
print
(movielist)
return movielist
# 第四部 儲存資料
defwritedate
(movielist)
:with
open
('douban.csv'
,'w'
, encoding=
'utf-8'
, newline='')
as file_obj:
writer = csv.dictwriter(file_obj, fieldnames=
['title'
,'star'
,'quote'
,'url'])
writer.writeheader(
)for each in movielist:
writer.writerow(each)
if __name__ ==
'__main__'
: movielist =
for i in
range(10
):# 獲取目標url
pagelink = doubanurl.
format
(i *25)
source = getsource(pagelink)
movielist += geteveryitem(source)
writedate(movielist)
爬取豆瓣Top250
requests庫可以自動爬取html頁面,自動網路請求提交。安裝方法 pip install requests requests庫主要有7個方法 首先開啟網頁 豆瓣top250 然後f12,得到如下圖 我們要找的內容在紅框裡面。這個頁面有25個電影,第乙個頁面 第二個頁面 我們可以觀察到 每個頁面...
爬取豆瓣TOP250書單
小白學習爬蟲 爬取豆瓣top250的書,正好本人也喜歡看書 思路分析 這是top250第一頁的鏈結 start 25第二頁的鏈結 start 50第三頁的鏈結 將第一頁鏈結改為?start 0也是可以訪問的,每一頁數字加25,構建10頁 如下 urls start format str i for ...
爬取豆瓣電影TOP250
利用css選擇器對電影的資訊進行爬取 import requests import parsel import csv import time import re class cssspider def init self self.headers defget dp self,url respon...