Python爬取豆瓣top250电影信息

1.GET,POST请求

import requests
req = requests.get("https://www.baidu.com/")
print(req.status_code)

200

状态码

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

2.re正则表达式

  1. re.match函数:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
  2. re.search:re.search 扫描整个字符串并返回第一个成功的匹配
  3. re.sub:用于替换字符串中的匹配re.compile :compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和search() 这两个函数使用
  4. findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
  5. re.finditer:和findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回
  6. re.split:split方法按照能够匹配的子串将字符串分割后返回列表

3.爬取豆瓣top250电影信息

import requests
import re

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2577.400"
    }
for i in range(0,250,25):
    url = 'https://movie.douban.com/top250?start=%s&filter=' % i
    res = requests.get(url, headers = headers)
    pattern = re.compile(r'.*?<em class="">(\d+)</em>.*?<span class="title">(.*?)</span>.*?<p class="">.*?: (.*?)[&nbsp|\.\.\.].*? (\d+).*?</p>', re.S)
    mlist = pattern.findall(res.text)
    for m in mlist:
        movie_data = DataFrame([(m[0], m[1], m[2], m[3])],columns=['rank', 'name', 'director','year'])
        top_250 = pd.concat([top_250,movie_data],ignore_index=True)

top_250.to_csv("top_250.csv", encoding = "utf-8")


Python爬取豆瓣top250电影信息