爬虫-豆瓣电影-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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章