Requests:爬取豆瓣排名前250的电影名称

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形式了Requests:爬取豆瓣排名前250的电影名称_第1张图片
  • r.json是request中内置的JSON解码器

你可能感兴趣的:(Python)