返回顶部

python之爬取豆瓣前250排名电影标题

原代码:

import requests
import re
 
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188"
}
 
for i in range(0,226,25):
    zxcvzx = f"https://movie.douban.com/top250?start={i}&filter="
    response = requests.get(zxcvzx, headers=headers)
    a = re.findall("<img width=\"100\" alt=\"(.*?)\"", response.text, re.S)
    for vbn in a:
        print(vbn)


优化,

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/115.0.0.0 Safari/537.36 Edg/115.0.1901.188"
}
 
session = requests.Session()
session.headers.update(headers)
 
 
def get_movie_titles(url):
    response = session.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    movie_titles = soup.find_all("img", width="100", alt=True)
    return [title["alt"] for title in movie_titles]
 
 
def main():
    for i in range(0, 226, 25):
        url = f"https://movie.douban.com/top250?start={i}&filter="
        movie_titles = get_movie_titles(url)
        for title in movie_titles:
            print(title)
 
 
if __name__ == "__main__":
    main()

优化点:
1. 使用 requests 库中的 Session 对象来通过复用连接和全局设置请求头来提高性能。
2. 使用 bs4 库中的 BeautifulSoup 来解析 HTML 内容,而不是使用正则表达式。

暂无评论