大致分为以下步骤:
- 使用requests库爬取网页
- 使用BeautifulSoup库解析网页
- 使用pandas库将数据存储为csv文件
1.首先引入第三方库:
import requests
from bs4 import BeautifulSoup
import pandas as pd
我们去豆瓣电影Top250会发现每个页面有25个电影:
查看URL发现每个URL都有标志:
2.下载4个页面的HTML:
page_indexs = range(0, 100, 25) # 构造分页列表
list(page_indexs)
def download_all_htmls(): # 爬取4个页面的HTML,用于后续的分析
htmls = []
for idx in page_indexs:
url = f"https://movie.douban.com/top250?start={idx}&filter=" # 替换分页参数
print("craw html:", url)
r = requests.get(url,
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"})
# r返回一个包含服务器资源的Response对象
if r.status_code != 200:
raise Exception("error") # 当程序出错时通过raise语句显示引发异常
htmls.append(r.text)
return htmls
# 执行爬取
htmls = download_all_htmls() # 爬取4个页面的HTML
3.解析HTML得到数据:
def parse_single_html(html): # 解析单个HTML,得到数据
soup = BeautifulSoup(html, 'html.parser') # 解析HTML数据
article_items = ( # 对照HTML结构写
soup.find("div", class_=