美文网首页
【Python爬虫】BeautifulSoup爬取豆瓣电影短评

【Python爬虫】BeautifulSoup爬取豆瓣电影短评

作者: 倔强的潇洒小姐 | 来源:发表于2018-03-16 19:46 被阅读690次
    目的:爬取豆瓣【红海行动】电影的首页短评
    步骤:

    1、使用BeautifulSoup解析网页

     soup = BeautifulSoup(r, 'lxml')    // lxml 库解析速度快,也能解析复杂网页
    

    2、描述要爬取的东西在哪

     soup.find_all()   或者 soup.select()
    

    3、从标签中获取所需信息,如<p>something</p>

    代码:
    # -*- coding: utf-8 -*-
    # __author__ = 'Carina'
    
    
    import requests
    import pandas
    from bs4 import BeautifulSoup
    
    url = "https://movie.douban.com/subject/26861685/comments"
    r = requests.get(url).text
    # print(r)
    soup = BeautifulSoup(r, 'lxml')
    pattern = soup.find_all('p', class_='')
    # p1 = soup.select("#comments > div:nth-of-type(1) > div.comment > p")    // Copy Selector
    comments = []
    for item in pattern:
        print(item.string)
        comments.append(item.string)
    df = pandas.DataFrame(comments)
    # 未指定路径时,csv文件同PY文件一个目录
    # df.to_csv('comments.csv')
    # 指定文件路径,并自动转码
    df.to_csv('C:/Users/Carina/Desktop/comments.csv', encoding='utf_8_sig')
    

    提示:
    requests是Python 的http库,常用的就是get方法

    问题一:
    1、class没有值

    源码.png

    (1)直接2个单引号,soup.find_all('p', ''),同时问题也来了,所有p里面的内容都被输出
    另外还有手机端评论的内容输出时显示为None(待研究

    图片.png 图片.png

    (2)查找时加上class, pattern = soup.find_all('p', class='')
    系统提示语法错误,因为class在python中是保留字(reserved word),不能作为变量名或过程名使用,所以class_应运而生;
    即: pattern = soup.find_all('p', class_='')

    总结:BeautifulSoup 只认CSS Selector,不认Xpath

    相关文章

      网友评论

          本文标题:【Python爬虫】BeautifulSoup爬取豆瓣电影短评

          本文链接:https://www.haomeiwen.com/subject/bfpkqftx.html