学习python第某天-splash爬取豆瓣评论

前提,我们电脑上的提前安装上splash啊
话不多说代码献上。

#coding=utf-8
import requests
import random
from lxml import etree
import csv
splash_url ="http://localhost:8050/render.html"
with open('a.csv','w',encoding='utf-8') as p:
    #转化为csv的操作方式,当然了要是读取的话也要有这么一个操作
    p_csv = csv.writer(p)
    p_csv.writerow(['id','code'])
    for i in range(0,2):
       url_i='https://movie.douban.com/subject/26752088/comments?start={}&limit=20&sort=new_score&status=P'.format(i*20)
       args= {'url':url_i,'timeout':5,'image':0}
       print(url_i)
       response = requests.get(splash_url,params=args)
       str=response.content
       tree=etree.HTML(str)
       span=tree.xpath('//span[@class="short"]')
       for span_curr_id in range(0,len(span)):
           strs=span[span_curr_id].xpath('.//text()')[0]
           #print(strs)
           print(type(strs))
           p_csv.writerow([span_curr_id,strs])


这么一看我是菜鸡,是不是,对你没猜错,哈哈,我是菜鸡
`这里是在写东西的时候看到的,我复制下来了,大家可以看一看
python利用open打开文件的方式:

w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )

小节:这里要说的一个事情啊,在代码的那个输出的时候,也就是
print(str)这个的时候,经常会报错,说是
'gbk' codec can't encode character '\U0001f64f' in position 92
这种错误,经过我的查找吧,哈哈,我没解决,但是有一点头绪就是说,我们这里print函数有个一默认的编码格式,但是这里和我们的输出字符的编码格式不一样,所以会导致错误,所以解决办法就是删除它,这就是我想到的。不知道我说的对不对,请大家评论指正。还有一点啊,就是我们的那个输出print中的那个str竟然不是string字符串类型的,卧槽,我第一次知道,是
<class 'lxml.etree._ElementUnicodeResult'>这个类型,卧槽,但是输出看着像字符串啊,真神奇,strs=span[span_curr_id].xpath('.//text()')[0]
就是上面这一句,尽然输出的不是字符串,神奇啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值