豆瓣电影 Top 250 (douban.com)
#导包
import requests
from bs4 import BeautifulSoup
import pandas as pd
第一步:下载所有页面(共10个)的HTML
【1】构造分页数字列表page_indexs
【2】构造函数download_all_htmls,下载列表所有页面的HTML
1、先添加请求头headers(爬取的网站有反爬虫机制,要向服务器发出爬虫请求,需要添加请求头headers。不然响应状态是418,正常情况应该是200。)
2、利用for循环取到页面列表中的每一个页面的网址url
3、用requests.get函数获取html网页(构造一个向服务器请求资源的url对象,并添加headers参数。返回的是一个包含服务器资源的Response对象。)
4、r.status_code返回http请求的返回状态:200表示连接成功,返回418表示爬取的网站有反爬虫机制,要向服务器发出爬虫请求,需要添加请求头headers
5、htmls.append(r.text)添加每个url对应的页面内容到列表htmls
text()方法:返回文本内容
第二步:解析HTML得到数据
【1】构造函数parse_single_html,用于解析单个html得到数据
1、找到每部电影:
find()方法:只返回第一个匹配到的对象
find(name, attrs, recursive, text, **wargs) # recursive 递归的,循环的
find_all()方法:返回所有匹配到的结果
find_all(name, attrs, recursive, text, limit, **kwargs)
此处形参用class_的原因: