爬豆瓣电影TOP250
import timeimport codecs
import requests
import lxml.html
with codecs.open('movies.txt','w','utf-8') as f:
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"}
url_tpl = 'https://movie.douban.com/top250?start={}&filter='
for page in range(10):
print('正在获取第{}页'.format(page+1))
start = page * 25
url = url_tpl.format(start)
http_response = requests.get(url,headers=myheaders)
http_response.encoding = 'utf-8'
html = lxml.html.fromstring(http_response.text)
movies = html.xpath('//*[@id="content"]/div/div/ol/li')
for movie in movies:
movie_text = str(movie.text_content())
clean_movie_text = movie_text.replace('\n',"")
print(clean_movie_text,file=f)
time.sleep(5)
为什么打开文件要用 codecs.open,试了一下去掉codecs报错,百度了codecs的作用是编码转化,还是不大理解。 codecs 统一为 Unicode 编码 进行写入文件,因为爬虫爬取的数据有可能是其他编码的
用这个操作替代 先 decode然后在 encode 转码 比较麻烦的操作
如果你想去掉codecs 就要把参数加上 encoding= 'utf-8'
因为 open 的第三个参数不是设置编码的 Twilight6 发表于 2020-6-3 14:52
codecs 统一为 Unicode 编码 进行写入文件,因为爬虫爬取的数据有可能是其他编码的
用这个操作替代 先 d ...
既然codecs可以统一为 Unicode 编码并写入文件
那为什么这里codecs.open('movies.txt','w','utf-8') ,open的第三个参数还要设置为'utf-8'呢 jump_p 发表于 2020-6-3 15:34
既然codecs可以统一为 Unicode 编码并写入文件
那为什么这里codecs.open('movies.txt','w','utf-8') ,o ...
加上这个免去了转码的繁琐操作呀,最终以utf-8形式写入文件 中间过程免去了 decode 然后 encode 转回utf-8 Twilight6 发表于 2020-6-3 15:36
加上这个免去了转码的繁琐操作呀,最终以utf-8形式写入文件 中间过程免去了 decode 然后 encode 转回utf- ...
{:10_275:}
页:
[1]