爬虫入门到入土(三)爬取豆瓣top250

链接在此:https://movie.douban.com/top250
爬虫入门到入土(三)爬取豆瓣top250
观察到一页里只有25部电影,看一看页数,10页。那就刚刚好事250条数据。
翻到第二页看一看
爬虫入门到入土(三)爬取豆瓣top250
发现URL变成了https://movie.douban.com/top250?start=25&filter=
继续翻页
URL变成了https://movie.douban.com/top250?start=50&filter=
我们尝试将50换成0,看看它是不是回到第一页
再试试将50换成75,看看它是不是会去到下一页
经过测试,上面两个猜测都是正确的。
这次的目标是,电影名称
爬虫入门到入土(三)爬取豆瓣top250
那么就可以开始写了

import requests
from bs4 import BeautifulSoup


headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}


def URL_list():#构建URL列表
    urls = []
    for i in range(0,250,25):
        url = 'https://movie.douban.com/top250?start=' + str(i) + '&filter='
        urls.append(url)
    return urls

def get_data(url):
    res = requests.get(url,headers = headers)#发起请求
    soup = BeautifulSoup(res.text,'lxml')#使用BeautifulSoup的解析库解析
    return soup

def parse_data(soup,data):
    target = soup.select("#content > div > div.article > ol > li > div > div.info > div.hd > a > span:nth-of-type(1)")#电影名称
    #target = soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > p')
    for i in target:
        data.append(i.get_text())
    return data

def main():
    urls = URL_list()
    data = []
    for url in urls:
        soup = get_data(url)#发起请求
        parse_data(soup,data)#解析数据并存进data列表中
    print("-----  豆瓣前250电影  -----")
    for i in range(len(data)):
        print("%6s"%str(i+1) + "    " +"%25s"%data[i])#格式化输出
main()

多级页面的爬虫程序的构造流程就是下面这个样子
爬虫入门到入土(三)爬取豆瓣top250
至于电影的其他信息,需要用到re表达式才能很好的提取。
下一个blog会说re表达式和它的应用。