鱼C论坛

 找回密码
 立即注册
查看: 985|回复: 5

[已解决]爬豆瓣电影TOP250

[复制链接]
发表于 2020-6-3 14:47:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import time
  2. import codecs
  3. import requests  
  4. import lxml.html  

  5. with codecs.open('movies.txt','w','utf-8') as f:
  6.     myheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"}
  7.     url_tpl = 'https://movie.douban.com/top250?start={}&filter='
  8.    
  9.     for page in range(10):
  10.         print('正在获取第{}页'.format(page+1))
  11.         start = page * 25
  12.         url = url_tpl.format(start)
  13.   
  14.         http_response = requests.get(url,headers=myheaders)  
  15.         http_response.encoding = 'utf-8'  
  16.         html = lxml.html.fromstring(http_response.text)  
  17.         movies = html.xpath('//*[@id="content"]/div/div[1]/ol/li')  

  18.         for movie in movies:
  19.             movie_text = str(movie.text_content())
  20.             clean_movie_text = movie_text.replace('\n',"")
  21.             print(clean_movie_text,file=f)
  22.         
  23.         time.sleep(5)
复制代码


为什么打开文件要用 codecs.open,试了一下去掉codecs报错,百度了codecs的作用是编码转化,还是不大理解。
最佳答案
2020-6-3 15:36:54
jump_p 发表于 2020-6-3 15:34
既然codecs可以统一为 Unicode 编码并写入文件
那为什么这里codecs.open('movies.txt','w','utf-8') ,o ...

加上这个免去了转码的繁琐操作呀,最终以utf-8形式写入文件 中间过程免去了 decode 然后 encode 转回utf-8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-3 14:52:26 | 显示全部楼层
codecs 统一为 Unicode 编码 进行写入文件,因为爬虫爬取的数据有可能是其他编码的

用这个操作替代 先 decode  然后在 encode 转码 比较麻烦的操作
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-3 14:56:39 | 显示全部楼层
如果你想去掉codecs 就要把参数加上 encoding  = 'utf-8'
因为 open 的第三个参数不是设置编码的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-3 15:34:13 | 显示全部楼层
Twilight6 发表于 2020-6-3 14:52
codecs 统一为 Unicode 编码 进行写入文件,因为爬虫爬取的数据有可能是其他编码的

用这个操作替代 先 d ...

既然codecs可以统一为 Unicode 编码并写入文件
那为什么这里codecs.open('movies.txt','w','utf-8') ,open的第三个参数还要设置为'utf-8'呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-3 15:36:54 | 显示全部楼层    本楼为最佳答案   
jump_p 发表于 2020-6-3 15:34
既然codecs可以统一为 Unicode 编码并写入文件
那为什么这里codecs.open('movies.txt','w','utf-8') ,o ...

加上这个免去了转码的繁琐操作呀,最终以utf-8形式写入文件 中间过程免去了 decode 然后 encode 转回utf-8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-3 15:41:21 | 显示全部楼层
Twilight6 发表于 2020-6-3 15:36
加上这个免去了转码的繁琐操作呀,最终以utf-8形式写入文件 中间过程免去了 decode 然后 encode 转回utf- ...

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 04:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表