爬蟲-豆瓣電影-Xpath定位-影評寫入CSV文件

import requests
import lxml.html#Xpath就是根據一定的網頁地址定位到某個值
import csv
import os


#訪問url,獲取網頁信息
def get_douban_movie(taget_url):
    req=requests.get(taget_url)
    req.encoding='utf-8'
    return req.content


#從網頁信息中,選擇class=info中的整段信息,再從info中獲取title,link等信息
#創建一個列表,將每個電影的內容存入一個字典中,將所有書的字典放在一個列表裏面
def get_movie_info(source):
    selector = lxml.html.document_fromstring(source)
    info_data=selector.xpath('//div[@class="info"]')
    info_list=[]
    for eachinfo in info_data:
        info_dict={}
        title=eachinfo.xpath('div[@class="hd"]/a/span[@class="title"]/text()')[0]
        link=eachinfo.xpath('div[@class="hd"]/a/@href')[0]
        star=eachinfo.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0]
        quote=eachinfo.xpath('div[@class="bd"]/p/span[@class="inq"]/text()')[0]
        info_dict['title']=title
        info_dict['link']=link
        info_dict['star']=star
        info_dict['quote']=quote
        info_list.append(info_dict)
    return info_list

#將內容寫入到csv文件中,首先判斷目錄是否存在,不存在則創建
#將文本內容寫入到csv文件中,使用的讀寫方式爲w,如果是二進制類型的,則使用ab方式
#將列表中的每個字典內容,單次寫入到文件中,如果不想要文件中有空行,則設置newline=""
def create_csv(info_list):
    if not os.path.exists('./MovieCsv'):
        os.mkdir('MovieCsv')
    with open('./MovieCsv/movieDouban.csv',"w",newline="") as f:
        writer=csv.DictWriter(f,fieldnames=['title','link','star','quote'])
        writer.writeheader()
        for eachmove in info_list:
            writer.writerow(eachmove)

#主函數調用
#其中觀察url鏈接中的數字變化,和頁數產生的關聯,從而使用循環來完成多頁的爬蟲
#循環控制頁數for i in range(5)
if __name__ == '__main__':
    taget_url = 'https://movie.douban.com/top250?start={}&filter='# 當前頁數-1*25,此處的0是變量
    taget_list=[]
    for i in range(5):
        taget_data=get_douban_movie(taget_url.format(i*25))
        taget_list+=get_movie_info(taget_data)
    create_csv(taget_list)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章