美文网首页Python
python爬虫之抓取豆瓣电影Top250

python爬虫之抓取豆瓣电影Top250

作者: __豆约翰__ | 来源:发表于2018-12-16 17:38 被阅读111次

    1.观察网页结构
    首先需要登录豆瓣的网站:https://movie.douban.com/top250 ,通过审查元素,可以看到豆瓣的电影都是很整齐的放在li 里面,所以很方便我们爬取数据

    image.png

    通过展开第一个li ,可以看到我们需要的数据


    image.png

    2.观察网址的变化
    通过点击页面的页数,我们发现网址也是很有规律的变化的,嘻嘻,是不是有种这个网站就是为爬虫而生的感觉
    点击第二页时网址是 : https://movie.douban.com/top250?start=25&filter=
    点击第三页时网址是 : https://movie.douban.com/top250?start=50&filter=
    并且每一页的电影条数刚好就是25条,所以,我们可以找到规律了.当然网址的&filter是可以去掉的,这并不会影响我们的发挥,还有一点就是通过设置start=0 依然可以访问首页

    3.开始写代码了

    pip install lxml
    pip install beautifulsoup4
    
    
    import requests
    from bs4 import BeautifulSoup
    import time
    import random
    
    # 设置header
    header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
            'Connection': 'keep - alive'
            }
    movie_list = []
    def get_pages_link():
        # https://movie.douban.com/top250?start=25
        for item in range(0,250,25):
            url = "https://movie.douban.com/top250?start={}".format(item)
            web_data = requests.get(url,headers=header)
            time.sleep(1 + random.random())
            soup = BeautifulSoup(web_data.text,'lxml')
            for movie in soup.select('#wrapper li'):
                href = movie.select('.hd > a')[0]['href']
                name = movie.select('.hd > a > span')[0].text
                star = movie.select('.rating_num')[0].text
                people = movie.select('.star > span')[3].text
                try:
                    quote = movie.select('.inq')[0].text
                except :
                    print("没有quote哦")
                    quote = None
                data = {
                    'url':href,
                    '评价人数':people,
                    '片名':name,
                    '评分':star,
                    '名言':quote
                }
                print(data)
            print('\n'+' - '*50+'\n')
    
    if __name__ =='__main__':
        get_pages_link()
    
    
    

    因为在运行的过程中,经常会报错,后来发现是在第9页有一条电影没有quote ,所以需要加上try语句,防止中途罢工

    image.png

    相关文章

      网友评论

        本文标题:python爬虫之抓取豆瓣电影Top250

        本文链接:https://www.haomeiwen.com/subject/fhexkqtx.html