Python爬虫代码优化:根据配置获取目标网站信息并保存数据
本文介绍了如何使用配置文件来优化 Python 爬虫代码,以便根据配置获取目标网站信息并保存数据。/n/npython/nimport requests/nfrom bs4 import BeautifulSoup/nimport re/nimport configparser/n/ndef crawl_website(url):/n try:/n # 发送HTTP请求,获取网页内容/n headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}/n response = requests.get(url, headers=headers)/n response.raise_for_status() # 检查请求是否成功/n/n # 解析HTML内容/n soup = BeautifulSoup(response.content, 'html.parser')/n/n # 爬取网站标题/n title = soup.title.text.strip() if soup.title else None/n/n # 爬取网站链接/n links = [link['href'] for link in soup.find_all('a', href=True)]/n/n # 爬取网站内容/n content = soup.find('div', class_='content').get_text(strip=True) if soup.find('div', class_='content') else None/n/n return {/n 'title': title,/n 'links': links,/n 'content': content/n }/n/n except requests.exceptions.RequestException as e:/n print('请求异常:', e)/n except Exception as e:/n print('发生异常:', e)/n/n return None/n/ndef save_data(data, filename):/n # 将爬取的数据保存到文件/n with open(filename, 'w', encoding='utf-8') as file:/n file.write(f'网站标题: {data.get(/'title/', /'未找到/')}/n')/n file.write('网站链接:/n')/n for link in data.get('links', []):/n file.write(f'{link}/n')/n file.write(f'网站内容:/n{data.get(/'content/', /'未找到/')}')/n/ndef extract_emails(text):/n # 提取电子邮件地址/n pattern = r'[/w/.-]+@[/w/.-]+'/n emails = re.findall(pattern, text)/n return emails/n/ndef main():/n # 读取配置文件/n config = configparser.ConfigParser()/n config.read('config.ini')/n url = config.get('Website', 'URL')/n save_filename = config.get('File', 'SaveFilename')/n/n # 调用函数,爬取网站信息/n result = crawl_website(url)/n/n if result:/n # 输出网站标题/n print('网站标题:', result.get('title', '未找到'))/n/n # 输出网站链接/n print('网站链接:')/n if result['links']:/n for link in result['links']:/n print(link)/n else:/n print('未找到网站链接')/n/n # 输出网站内容/n print('网站内容:')/n if result['content']:/n print(result['content'])/n else:/n print('未找到网站内容')/n/n # 提取电子邮件地址/n emails = extract_emails(result['content'])/n if emails:/n print('提取到的电子邮件地址:')/n for email in emails:/n print(email)/n else:/n print('未找到电子邮件地址')/n/n # 将数据保存到文件/n save_data(result, save_filename)/n print('数据已保存到文件')/n/n else:/n print('未能成功爬取网站信息')/n/nif __name__ == '__main__':/n main()/n/n/n在这个改进版本中,我们根据之前的建议进行了以下优化:/n/n1. 添加了一个配置文件 config.ini,用于存储爬取的目标网站URL和保存数据的文件名。你可以根据需要进行自定义配置。/n2. 在主函数中,通过读取配置文件来获取目标网站URL和保存数据的文件名,使得代码更加灵活和可配置。/n/n你可以在 config.ini 文件中添加以下内容:/n/n/n[Website]/nURL = https://www.example.com/n/n[File]/nSaveFilename = website_data.txt/n/n/n通过配置文件,你可以轻松更改目标网站和保存数据的文件名,而不需要修改代码本身。/n/n希望这样的完善能满足你的需求。如有其他问题,请随时提问!
原文地址: http://www.cveoy.top/t/topic/mZI 著作权归作者所有。请勿转载和采集!