下飯文章,客官裏面請,看菜單,先點菜吧
這次就是一個豆瓣網近期要上映電影的爬蟲
廢話不多說了,直接上代碼吧:
- 特別注意本文直接看代碼,文中的重要知識點,有註釋,本文用到的知識點在我之前的文章中全部都有詳細的講解.
- 文中部分代碼註釋,是我在爬蟲中寫代碼的步驟,代碼永遠不是一次寫成,要逐步調試,步步簡單輸出,這樣代碼發生錯誤後,很好修改.很快的能確定錯誤的地方.
#encoding: utf-8
import requests
from lxml import etree
import csv
headers ={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',
'Referer': 'https://movie.douban.com/'
}
url = 'https://movie.douban.com/cinema/later/xian/'
response = requests.get(url,headers=headers)
text = response.text
#數據解析
html = etree.HTML(text)
#div class="intro"
movies = []
intros = html.xpath("//div[@class = 'intro']")
for intro in intros:
#注意xpath語法返回的永遠是一個列表,我們要得到原本的數據,就列表索引取零
names = intro.xpath(".//h3/a/text()")[0]
uls = intro.xpath(".//ul")
for ul in uls:
data = ul.xpath(".//li[1]/text()")[0]
leixing =ul.xpath(".//li[2]/text()")[0]
address = ul.xpath(".//li[3]/text()")[0]
redu = ul.xpath(".//li[4]/span/text()")[0]
# print(names)
# print(data)
# print(leixing)
# print(address)
# print(redu)
movie={
'熱度': redu,
'電影名': names,
'電影類型': leixing,
'發行地': address,
'上映日期': data,
}
movies.append(movie)
text1 = movies
header = {
'電影名',
'上映日期',
'電影類型',
'熱度',
'發行地',
}
with open('xian_douban.csv','w',encoding='utf-8',newline='')as fp:
writer = csv.DictWriter(fp,header)
# csv.writeheader()
# writer.writerow(['1','2'',3','4'])
writer.writerows(text1)
#小總結:首先你得確定自己要爬取的數據在那個主便籤下(即父標籤)
#然後先通過xpath語法,選擇到父標籤,然後,在通過.//的方式一步步選擇
#自己要爬取的數據,先選擇到主標籤是爲了循環爬取同樣類型標籤的數據
最終爬出來的表格,放張圖給各位客官看一下.
這裏遇到一個問題,在這記錄一下:表格的輸出的順序暫時不知道怎麼去規定,要學習後面的內容才能搞懂,我在這做個記錄
寫在後面:
最近一段時間都在搞這個爬蟲和數據分析,各位客官,有興趣的點個贊
哦!
然後把往期的爬蟲文章,這裏放個傳送門,方便各位客官查看:
爬蟲(1)爬蟲概述,爬蟲抓包工具
爬蟲(2)urllib和parse庫的介紹和常用函數介紹和使用
爬蟲(3)request.Request類的介紹和簡單爬蟲實戰
爬蟲(4)ProxyHandler處理器(代理設置)
爬蟲(5)一文搞懂cookie原理和使用(客官裏面請,下飯文章吃飽再走)
爬蟲(6)cookie信息保存到本地和加載
爬蟲(7)一文搞懂爬蟲的網絡請求,requests庫的使用
Xpath詳解