正确多线程爬虫

该代码实现了一个基于Python的网络爬虫,从指定网页抓取包含特定词汇的标题及链接,并使用多线程进行内容下载。用户输入关键词后,程序将搜索相关网页并保存链接,随后每个链接的内容会被写入文件。此过程提高了爬取效率,适用于批量数据获取。
摘要由CSDN通过智能技术生成

import requests
from lxml import etree
import threading
from queue import Queue
url="https://www.qjnu.edu.cn/channels/9260.html"
word=input("请输入词汇:")
a=requests.get(url)
b=a.content.decode()
c=etree.HTML(b)
ad=c.xpath("//h4/a/@href") #网页网址
title=c.xpath("//h4/a/text()")#标题内容
d=[]
for i in range(len(ad)):#将符合word词汇的标题网址存入列表d中
    if word in title[i]:
        d.append(ad[i])

#保存对应的网页地址到“学校党员主题网址.txt”
for i in range(len(d)):
    with open('学校'+word+'主题网址.txt','at',encoding='utf-8') as f:
        f.writelines(d[i])
        f.writelines('\n')


def Pachong(u,i): #将正文内容写进文档
    aa=requests.get(u)
    bb=aa.content.decode()
    cc=etree.HTML(bb)
    dd=cc.xpath("//span/text()")
    dd.insert(0,'第'+str(i)+'篇相关词汇内容:\n')
    dd.append('\n')
    with open('学校'+word+'主题.txt','at',encoding='utf-8') as f:
        f.writelines(dd)
        f.writelines('\n')
    f.close()
import time
t_start=time.perf_counter()
#创建一个空列表,存标题网址
url_queue=Queue()
for i in range(len(d)):
    url_queue.put(d[i])
#多线程
aa=[]
for i in range(url_queue.qsize()):
    a=threading.Thread(target=Pachong,args=(url_queue.get(i),i+1))
    aa.append(a)
    print(a)
for j in aa:#开始执行程序
    j.start()
for k in aa:#保证子线程能够执行完成
    k.join()
t_end=time.perf_counter()
t_all=t_end-t_start
print(t_all)
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值