import requests
from bs4 import BeautifulSoup
import pandas as pd
# 读取豆瓣TOP250的电影名
def get_movies():
# 请求头
headers = {
'UserAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}
title_list = []
for i in range(0,10):
link='https://movie.douban.com/top250?start='+str(i*25)
r=requests.get(link,headers=headers,timeout=10)
print(str(i+1)+'页面响应码状态:',r.status_code)
soup=BeautifulSoup(r.text,'lxml')
movies_titles =soup.find_all('div',class_='hd')
for each in movies_titles:
getTitle=each.a.span.text.strip()#获取电影名称
print(getTitle)
title_list.append(getTitle)
return title_list
movies=get_movies()
#将获取的数据转存为CSV文件
name=['movies_name']
test=pd.DataFrame(columns=name,data=movies)
test.to_csv('e:/movies.csv',encoding="gbk")
#将获取的数据存在本地的Txt文件中
# with open('movies.txt','w',encoding='utf-8') as f:
# f.write(str(movies))#不能写入list数据,就把他变成string类型的写进去
# f.close()
print(movies)
- r.text 是服务器响应的内容,会自动根据响应头的字符编码进行解码,获取的是整个页面的HTML代码
- r.encoding是服务器内容使用的文本编码
- r.status_code用于监测响应的状态吗如果返回200,就表示请求成功;如果返回的是4xx,就表示客户端错误;如果返回5xx,则表示服务器错误响应。
- r.content是字节式的响应体,回自动解码gzip和deflate编码的响应数据,和r.text返回的内容差不多,只是中文字符变成了unico形式了
- r.json是request中内置的JSON解码器