第5课 实例二:爬取电影

一、爬取前的准备工作

1. 选择一个网站:https://www.douban.com

2. 在进行爬取之前,我们先去看看它的robots协议。

协议网址:https://www.douban.com/robots.txt

3. 进入首页 https://movie.douban.com/top250?start=0&filter= ,打开检查工具,在Elements里查看这个网页,是什么结构。

点击开发者工具左上角的小箭头,选中“肖申克的救赎”,这样就定位了电影名的所在位置,审查元素中显示标签内的文本,class属性;推荐语和评分也是如此,;序号:标签内的文本,class属性;推荐语;链接是标签里href的值。最后,它们最小共同父级标签,是

  • 4. 我们再换个电影验证下找的规律是否正确。

    5. check后,我们再看一共10页,每页的url有什么相关呢?

    第1页:https://movie.douban.com/top250?start=0&filter=

    第3页:https://movie.douban.com/top250?start=50&filter=

    第7页:https://movie.douban.com/top250?start=150&filter=

    发现只有start后面是有变化,规律就是第N页,start=(N-1)*25

    6. 基于以上分析,我们有两种写爬虫的思路。

    思路一:先爬取最小共同父级标签 

  • ,然后针对每一个父级标签,提取里面的序号/电影名/评分/推荐语/链接。

    思路二:分别提取所有的序号/所有的电影名/所有的评分/所有的推荐语/所有的链接,然后再按顺序一一对应起来。

    二、代码实现过程(思路一)

    import requests# 引用requests库

    from bs4 import BeautifulSoup# 引用BeautifulSoup库

    res_films=requests.get('https://movie.douban.com/')# 获取数据

    bs_films=BeautifulSoup(res_films.text,'html.parser')# 解析数据

    fil_title=bs_films.find_all(class_='title')

    fil_num=bs_films.find_all(class_="")

    list_all=[]# 创建一个空列表,用于存储信息

    for x in range(len(fil_num)):

        list_films=[fil_num[x].text[18:-14],fil_title[x].find('a')['href']]

        list_all.append(list_films)

        print(list_all)

  • 你可能感兴趣的:(第5课 实例二:爬取电影)