编程介的小学生 2020-04-03 14:19 采纳率: 20.5%
浏览 259
已结题

帮漂亮的大眼学妹提问:Python语言爬取douban上top500的电影的名字,存入movie.csv文件怎么做?

帮漂亮的大眼学妹提问:Python语言爬取douban上top500的电影的名字,存入movie.csv文件怎么做?

  • 写回答

2条回答 默认 最新

  • 关注

    1、确定url,设置请求头user-agent,利用requests库请求并得到网页源码
    2、分析返回的源码,利用xpath解析源码得到想要获取的内容并以字典的方式存到列表中3、
    3、遍历列表将数据写入csv文件中

    ```# coding = utf-8

    Author:'Alvin'

    Date: '2018/8/10'

    import requests
    from lxml import html
    import csv

    #step1 确定url,设置请求头user-agent,利用requests库请求并得到网页源码
    def get_content():
    url = 'https://movie.douban.com/top250'
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
    headers = {
    "User_Agent": user_agent
    }
    response = requests.get(url, headers=headers)
    get_movie_list(response.content)

    #setp2 分析返回的源码,利用xpath解析源码得到想要获取的内容并以字典的方式存到列表中
    def get_movie_list(source):
    selector = html.document_fromstring(source)
    movieList = selector.xpath('//div[@class="info"]')
    movies = []
    for movie in movieList:
    title = movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()')
    other = movie.xpath('div[@class="hd"]/a/span[@class="other"]/text()')
    url = movie.xpath('div[@class="hd"]/a/@href')
    rate_num = movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')
    quote = movie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()')

        movieDic = {}
        movieDic["title"] = ''.join(title[0] + other[0])
        movieDic["url"] = url[0]
        movieDic["star"] = rate_num[0]
        movieDic["quote"] = quote[0]
        movies.append(movieDic)
    
    write_data(movies)
    

    #step3 遍历列表将数据写入csv文件中
    def write_data(movies):
    with open("douban.csv", 'w', encoding="UTF-8") as f:
    writer = csv.DictWriter(f, fieldnames=['title', 'star', 'quote', 'url'])
    writer.writeheader()
    for mov in movies:
    print("正在写入:" + mov["title"])
    writer.writerow(mov)

    if name == "__main__":
    get_content()

    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀