爬取多个企业(两页以上)的资讯信息,保存到“”.txt,有异常处理的部分和延时爬取处理,给我完整的代码
时间: 2024-10-08 20:27:01 浏览: 25
Python技术数据爬取与清洗方法.docx
为了帮助您完成这个任务,我会提供一个Python基础的示例,使用`requests`, `BeautifulSoup`和`time`库来爬取网页内容,并处理一些基本的异常和延时。请注意这只是一个简化版的示例,实际应用可能需要更复杂的错误处理、身份验证和网络策略遵守。
```python
import requests
from bs4 import BeautifulSoup
import time
# 目标URL的列表,这里假设每个企业都有两个页面
urls = [
"https://example.com/company1",
"https://example.com/company2",
# 添加其他企业...
]
# 异常处理函数
def handle_error(response):
if response.status_code != 200:
print(f"抓取 {response.url} 出错,状态码: {response.status_code}")
return None
return response.text
# 延迟爬取处理
def delay_fetch(url):
time.sleep(5) # 每次请求之间延迟5秒
try:
response = requests.get(url, timeout=10)
return handle_error(response)
except requests.exceptions.RequestException as e:
print(f"请求异常: {str(e)}")
return None
# 存储数据的文件名
filename = "company_news.txt"
# 开始爬取并写入文件
with open(filename, 'a', encoding='utf-8') as f:
for i, url in enumerate(urls):
content = delay_fetch(url)
if content is not None:
soup = BeautifulSoup(content, 'lxml')
# 这里假设新闻在特定的HTML标签下,例如`<p>`标签
news_paragraphs = soup.find_all('p')
for p in news_paragraphs:
f.write(p.text + '\n') # 将每条新闻写入文件
f.write('\n\n') # 避免相邻公司的新闻混在一起
# 提供异常处理和延时爬取的几个相关问题
阅读全文