面相对象写豆瓣 250电影名,评分和地址

本文介绍了如何使用Python的多线程实现一个爬虫,通过`requests`库获取豆瓣电影Top250的电影名、评分和链接,并利用`BeautifulSoup`解析HTML,最后将数据保存到JSON文件。同时,展示了在Douban类中进行并发请求和数据处理的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.多线程爬虫

import threading # 线程模块

#from threading import Thread
#import time
#import requests

def funa():

print(‘一直小爬虫’)

time.sleep(1)

print(‘就是玩儿’)

def funb():

print(‘大海星辰’)

time.sleep(2)

print(‘倒车请注意’)

funa()

funb()

# 创建子线程

if name == ‘main’:

# 创建子线程对象,target:执行的任务名,不要加()

t1 = Thread(target=funa())

t2 = Thread(target=funb())

# 开启子线程

t1.start()

t2.start()

url = ‘https://movie.douban.com/top250’

get 请求

import requests
from lxml import etree
import json

class Douban:
# 初始化
def init(self):
self.url = ‘https://movie.douban.com/top250’
self.headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36’
}

# 发送请求
def get_res(self):
    self.res = requests.get(self.url, headers=self.headers)
    # print(res.text)

# 提取数据 ---电影名   title score评分,  链接href
def get_data(self):
    html = etree.HTML(self.res.text)
    # 标签<>里面的是属性:@, 标签<><>中间的是文本值:text()
    title = html.xpath('//div[@class="hd"]/a/span[1]/text()')
    score = html.xpath('//div[@class="star"]/span[2]/text()')
    href = html.xpath('//div[@class="hd"]/a/@href')
    # print(href)

    # 用拉链函数放一起
    self.li_data = list(zip(title, score, href))  # self.li_data是列表
    # print(result)

# 保存数据
def save_data(self):
    for data in self.li_data:
        # print(data)
        dic = {}
        dic['title'] = data[0]
        dic['score'] = data[1]
        dic['href'] = data[2]

        # print(dic)
        # 写入文件
        with open('top250.json', 'a', encoding='utf-8')as f:
            doc_data = json.dumps(dic, ensure_ascii=False)
            f.write(doc_data + ',\n')

# 翻页操作
def run(self):
    self.get_res()
    self.get_data()
    self.save_data()

实例化对象

db = Douban()
db.run()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值