以下是对代码的纠错和改进:

  1. 需要导入re模块,因为代码中使用了正则表达式。

  2. 在使用正则表达式前,需要将html转换成字符串类型。

  3. 在使用线程池时,需要对异常进行处理,以避免程序崩溃。

  4. 在使用线程池时,应该将每个任务的结果保存起来,以便后续处理。

  5. 在使用线程池时,应该使用as_completed函数,以便可以按照完成顺序处理结果。

  6. 在使用线程池时,应该使用进度条来显示处理进度。

改进后的代码如下:

import requests
import re
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor, as_completed
from tqdm import tqdm

url = input('请输入网页链接:')
keywords = input('请输入要查找的关键词,以逗号分隔:').split(',')
pattern = '|' . join(keywords)
regex = re.compile(pattern)

session = requests.Session()
session.headers.update({'User-Agent': 'Mozilla/5.0'})
response = session.get(url, timeout=10)
html = response.text

soup = BeautifulSoup(html, 'html.parser')

result = regex.search(str(html))
if result:
    print(result.group())

links = soup.find_all('a')
results = []
with ThreadPoolExecutor(max_workers=10) as pool:
    futures = [pool.submit(session.get, link.get('href'), timeout=10) for link in links if link.get('href').startswith('http')]
    for future in tqdm(as_completed(futures), total=len(futures)):
        try:
            response = future.result()
            sub_html = response.text
            sub_results = regex.findall(sub_html)
            results.extend(sub_results)
        except Exception as e:
            print(f'任务执行失败:{e}')
for result in results:
    print(result)
Python网页爬虫代码纠错及优化:高效提取关键词并处理异常

原文地址: https://www.cveoy.top/t/topic/loMt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录