用Python爬虫爬取国家电⽹电⼦商务平台所有招标公告的“项⽬公告⽂件”
时间: 2024-04-05 11:29:12 浏览: 199
好的,以下是一个Python爬虫程序,可以用来爬取国家电网电子商务平台上的所有招标公告,并下载其中的“项目公告文件”。请注意,这个程序仅供参考,您需要根据实际需要进行适当修改和测试。
```python
import requests
import os
from bs4 import BeautifulSoup
# 定义爬虫程序的入口URL和存储目录
base_url = 'http://ecp.sgcc.com.cn/project_list.jsp'
base_dir = './sgcc'
# 如果存储目录不存在,则创建它
if not os.path.exists(base_dir):
os.mkdir(base_dir)
# 定义一个函数来爬取一个页面上的所有招标公告信息
def parse_page(url):
# 发送HTTP请求并获取响应内容
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 在页面上查找所有招标公告信息
for item in soup.find_all('div', {'class': 'm-project-item'}):
# 获取招标公告的标题和链接
title = item.find('a').text.strip()
link = 'http://ecp.sgcc.com.cn/' + item.find('a')['href']
# 在招标公告页面上查找项目公告文件的链接
response = requests.get(link)
soup = BeautifulSoup(response.text, 'html.parser')
file_link = soup.find('a', {'title': '项目公告文件'})['href']
# 下载项目公告文件并保存到本地磁盘
response = requests.get(file_link)
filename = title + '.pdf'
filepath = os.path.join(base_dir, filename)
with open(filepath, 'wb') as f:
f.write(response.content)
print('Downloaded:', filename)
# 爬取所有页面上的招标公告信息
page = 1
while True:
url = base_url + '?page=' + str(page)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
if len(soup.find_all('div', {'class': 'm-project-item'})) == 0:
break
parse_page(url)
page += 1
print('All done!')
```
这个程序使用了requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。程序会从指定的URL开始,遍历所有页面上的招标公告信息,并下载其中的“项目公告文件”。下载的文件将保存在指定的存储目录中。
请注意,在运行这个程序之前,请确保您已经安装了Python以及需要的第三方库(requests和BeautifulSoup),并且已经获得了国家电网电子商务平台的使用许可。
阅读全文