美文网首页
【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