第5课 实例二:爬取电影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第5课 实例二:爬取电影相关的知识,希望对你有一定的参考价值。

参考技术A 1. 选择一个网站: https://www.douban.com

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

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

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

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

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. 基于以上分析,我们有两种写爬虫的思路。

思路一:先爬取最小共同父级标签 <li>,然后针对每一个父级标签,提取里面的序号/电影名/评分/推荐语/链接。

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

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)

第一次爬虫实例

第一次爬虫实例

1、这是我第一次写的爬虫实例,写的不好请见谅,最后发现爬取的次数多了,被网站拉黑了,还是需要代理才行,代理还不太清楚怎么弄就先这样了

后面请大神可以帮忙改下怎么使用代理爬取。

第一次爬取网站的所有电影信息(仅供参考)

具体思路就是先获取第一页上的信息

然后根据翻页上的页数来确定爬取多少页

#下一步就是要写怎么爬取这些电影的种子并且下载到本地,等有时间了在写

下面是具体代码:

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor


root = http://www.btrenren.com

def  bt_video(num):
    url = "http://www.btrenren.com/index.php/Index/index/p/%s.html"%num
    head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"}

    html = requests.get(url=url,headers=head)
    soup = BeautifulSoup(html.content,lxml)
    data = soup.find(div,class_="ml")
    data = data.find_all(class_="title")
    with open("video.txt", a, encoding=utf-8) as f:
        for i in data:
            #电影名
            name = i.find_all(font)[1].get_text().split(/)[0]
            #日期国家
            vlue = i.find_all(class_=des)[0].get_text().split(
)[0]
            #演员
            vlue1 = i.find_all(class_=des)[0].get_text().split(
)[1]
            #豆瓣评分
            douban = i.find(class_="rt").get_text()
            #网页路径
            href = root + i.find_all(a)[1].get(href)
            #print(name,vlue,vlue1,douban,href)
            f.write(%s,%s,%s,%s,%s
 % (name, vlue, vlue1, douban,href))
    print(num)


def num_video():
    url = "http://www.btrenren.com/index.php/Index/index/p/1.html"
    head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"}
    html = requests.get(url=url, headers=head)
    soup = BeautifulSoup(html.content, lxml)
    number = soup.find(ul,class_="pagelist")
    number = number.find_all(span,class_="rows")
    num = number[0].get_text().split( )[1]
    return num





if __name__ == "__main__":
    executor = ThreadPoolExecutor(max_workers=30)
    num = int(num_video())
    for i in range(1,num):
        executor.submit(bt_video,i)
    executor.shutdown()
    exit()

 

以上是关于第5课 实例二:爬取电影的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫简单实例——豆瓣电影评论数据的爬取

XPath之电影天堂数据爬取

Web爬虫|入门实战之猫眼电影

爬取猫眼电影

Python爬虫实践 四种姿势爬取豆瓣电影Top250信息!

Python爬虫实践 四种姿势爬取豆瓣电影Top250信息!