import requests
# 先进行第一次安装
from lxml import etree
import pandas as pd
url="https://book.douban.com/subject/1084336/comments/"
r=requests.get(url).text
s=etree.HTML(r)
# 获取文本内容用text(),观察下面获取的第一个、第二个文本内容时的xpath后面寻找数据的参数的变化(浏览器复制方法)
# print(s.xpath('//*[@id="comments"]/ul/li[1]/div[2]/p/span/text()'))
# print(s.xpath('//*[@id="comments"]/ul/li[2]/div[2]/p/span/text()'))
#print(s.xpath('//*[@id="comments"]/ul/li/div[2]/p/span/text()'))
file=s.xpath('//*[@id="comments"]/ul/li/div[2]/p/span/text()')
df=pd.DataFrame(file)
# df.to_csv('pinglun.xlsx')
df.to_excel('pinglun2.xlsx')
# 这里运行结果显示ModuleNotFoundError: No module named 'openpyxl',所以需要安装这个库,这个库是保存excel文件的依赖库,最好使用
# csv形式,但比较写入的结果而言,to_excel的结果更为规范
# 尝试手写
print(s.xpath('//div[@class="comment"]/p/span/text()')[0])
print("\n".join(s.xpath('//div[@class="comment"]/p/span/text()')))
# 也可以通过其他方式获取文本内容
# 获取第一个
print(s.xpath('//*[@id="comments"]/ul/li[position()=1]/div[2]/p/span/text()'))
# 获取最后一个p
print(s.xpath('//*[@id="comments"]/ul/li[last()]/div[2]/p/span/text()'))
xpath是一个非常好用的方法,可以灵活多样的寻找我们需要的数据。
接下来就要进行思考如何爬取多页的数据。当然,要遵守robots.txt协议。