Python爬蟲實例:爬取豆瓣Top250


入門第一個爬蟲一般都是爬這個,實在是太簡單。用了 requests 和 bs4 庫。

1、檢查網頁元素,提取所需要的信息並保存。這個用 bs4 就可以,前面的文章中已經有詳細的用法闡述。

2、找到下一個 url 地址。本例中有兩種方法,一是通過 url 的規則,本例中通過比較發現,只要更改 url 中的 start 參數值就可以;二是通過下一個頁的標簽獲取下一頁的 url。代碼中采用了第一種方法。

3、判斷退出條件,爬蟲不可能無限制循環下去。

在這個最簡單的示例中,實現以上三步一個爬蟲就完成了。簡單到不想做其他說明,直接看代碼吧。

"""
爬取豆瓣電影Top250
"""

import os
import re
import time
import requests
from bs4 import BeautifulSoup


def download(url, page):
    print(f"正在爬取:{url}")
    html = requests.get(url).text   # 這里不加text返回<Response [200]>
    soup = BeautifulSoup(html, 'html.parser')
    lis = soup.select("ol li")
    for li in lis:
        index = li.find('em').text
        title = li.find('span', class_='title').text
        rating = li.find('span', class_='rating_num').text
        strInfo = re.search("(?<=<br/>).*?(?=<)", str(li.select_one(".bd p")), re.S | re.M).group().strip()
        infos = strInfo.split('/')
        year = infos[0].strip()
        area = infos[1].strip()
        type = infos[2].strip()
        write_fo_file(index, title, rating, year, area, type)
    page += 25
    if page < 250:
        time.sleep(2)
        download(f"https://movie.douban.com/top250?start={page}&filter=", page)


def write_fo_file(index, title, rating, year, area, type):
    f = open('movie_top250.csv', 'a')
    f.write(f'{index},{title},{rating},{year},{area},{type}\n')
    f.closed


def main():
    if os.path.exists('movie_top250.csv'):
        os.remove('movie_top250.csv')

    url = 'https://movie.douban.com/top250'
    download(url, 0)
    print("爬取完畢。")


if __name__ == '__main__':
    main()

 


相關博文推薦:

Python爬蟲實例:爬取貓眼電影——破解字體反爬

Python爬蟲實例:爬取B站《工作細胞》短評——異步加載信息的爬取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM