Python爬虫,采用多线程爬取和正常爬取
❗❗❗本文最后更新于 401 天前,其中的信息可能已经过时;如有错误请在文章下方评论✅,欢迎纠错🥰!
示例使用 豆瓣北京-影讯 页面内容。
import time
import threading
import requests
from bs4 import BeautifulSoup
# 正常爬取
start_time = time.time()
print("任务开始")
result = []
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44"
}
url = "https://movie.douban.com/cinema/later/beijing/"
resp = requests.get(url, headers=headers)
page = resp.text
soup = BeautifulSoup(page, 'html.parser')
url_list = soup.select("#showing-soon > div > div > h3 > a")
urls = []
for i in url_list:
    urls.append(i.get("href"))
for url2 in urls:
    resp2 = requests.get(url2, headers=headers)
    page2 = resp2.text
    soup2 = BeautifulSoup(page2, 'html.parser')
    head = soup2.find("head")
    title = head .find("title").get_text().strip()
    result.append(title)
end_time = time.time()
total_time = end_time - start_time
print("任务结束,总耗时为:{}".format(total_time))
for i in result:
    print(i,end="   ")
输出结果: 
任务开始
任务结束,总耗时为:21.05104684829712
神探大战 (豆瓣) 隐入尘烟 (豆瓣) 海底小纵队:洞穴大冒险 (豆瓣) 外太空的莫扎特 (豆瓣) 龙女孩 (豆瓣) 冲出地球 (豆瓣) 二郎神之深海蛟龙 (豆瓣) 开心超人之英雄的心 (豆瓣) 阳光照耀塔什库尔干 (豆瓣) 七人乐队 (豆瓣) 疯了!桂宝之三星夺宝 (豆瓣) 漫长的告白 (豆瓣) 念念相忘 (豆瓣) 遇见你 (豆瓣) 我们的样子像极了爱情 (豆瓣) 她的爱情 (豆瓣) 世界上最爱我的人 (豆瓣) 断网 (豆瓣) 重回地球 (豆瓣) 撼沙 (豆瓣) 红孩儿之初生牛犊 (豆瓣) 小美人鱼之大海怪传说 (豆瓣) 新灰姑娘2 (豆瓣)
# 多线程爬取
result = []
def get(urls, name):
    # print("进程\033[1;33m{}\033[0m开始".format(name))
    global result
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44"
    }
    for url in urls:
        resp = requests.get(url, headers=headers)
        page = resp.text
        soup = BeautifulSoup(page, 'html.parser')
        head = soup.find("head")
        title = head .find("title").get_text().strip()
        result.append(title)
    # print("进程\033[1;33m{}\033[0m结束".format(name))

def main():
    print("主任务开始")
    start_time = time.time()
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44"
    }
    url = "https://movie.douban.com/cinema/later/beijing/"

    resp = requests.get(url, headers=headers)
    page = resp.text
    soup = BeautifulSoup(page, 'html.parser')
    url_list = soup.select("#showing-soon > div > div > h3 > a")
    urls = []
    for i in url_list:
        urls.append(i.get("href"))
    t1 = threading.Thread(target=get, args=(urls[0:4],"一"))
    t2 = threading.Thread(target=get, args=(urls[4:8],"二"))
    t3 = threading.Thread(target=get, args=(urls[8:12],"三"))
    t4 = threading.Thread(target=get, args=(urls[12:16],"四"))
    t5 = threading.Thread(target=get, args=(urls[16:20],"五"))
    t6 = threading.Thread(target=get, args=(urls[20:],"六"))

    t1.start()
    t2.start()
    t3.start()
    t4.start()
    t5.start()
    t6.start()

    t1.join()
    t2.join()
    t3.join()
    t4.join()
    t5.join()
    t6.join()
    end_time = time.time()
    total_time = end_time - start_time
    print("主任务结束,总耗时为:{}".format(total_time))
    for i in result:
        print(i,end="   ")

if __name__ == "__main__":
    main()
输出结果: 
主任务开始
主任务结束,总耗时为:4.847523927688599
阳光照耀塔什库尔干 (豆瓣) 龙女孩 (豆瓣) 红孩儿之初生牛犊 (豆瓣) 神探大战 (豆瓣) 念念相忘 (豆瓣) 世界上最爱我的人 (豆瓣) 七人乐队 (豆瓣) 小美人鱼之大海怪传说 (豆瓣) 隐入尘烟 (豆瓣) 断网 (豆瓣) 遇见你 (豆瓣) 冲出地球 (豆瓣) 疯了!桂宝之三星夺宝 (豆瓣) 新灰姑娘2 (豆瓣) 海底小纵队:洞穴大冒险 (豆瓣) 我们的样子像极了爱情 (豆瓣) 二郎神之深海蛟龙 (豆瓣) 重回地球 (豆瓣) 漫长的告白 (豆瓣) 外太空的莫扎特 (豆瓣) 撼沙 (豆瓣) 开心超人之英雄的心 (豆瓣) 她的爱情 (豆瓣)

正常爬取所花费的时间是多线程爬取的四倍。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇