如何用Python编写代码从天眼查网站抓取山东省内的所有公司数据并存储?
时间: 2024-12-19 13:16:58 浏览: 11
使用Python爬虫从天眼查网站抓取特定地区的公司数据并存储通常需要以下步骤:
1. **安装必要的库**:
- 首先,你需要安装 `requests` 库来发送HTTP请求,以及 `BeautifulSoup` 或 `lxml` 来解析HTML内容。可以使用以下命令安装:
```
pip install requests beautifulsoup4
```
2. **分析网页结构**:
找到包含山东省内公司信息的页面元素,这通常涉及到查看天眼查网站的源代码或者使用浏览器开发者工具检查。
3. **制定爬取策略**:
设计一个函数,通过URL分页的方式遍历整个结果集。由于天眼查可能会有反爬机制,可能需要设置User-Agent,处理cookies或使用代理IP。
4. **编写爬虫脚本**:
示例代码可能如下所示,这里仅作示例,实际代码会更复杂,因为真实的网页结构和API变化频繁:
```python
import requests
from bs4 import BeautifulSoup
def get_company_data(url):
headers = {'User-Agent': 'Your User Agent'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
# 查找并提取数据的部分
companies = soup.find_all('div', class_='company-item') # 这里假设公司信息在一个特定class中
data_list = []
for company in companies:
name = company.find('h3').text # 提取公司名称
... # 添加其他所需字段的提取代码
data_list.append({'name': name, 'additional_info': additional_info}) # 存储数据
return data_list
base_url = 'https://www.tianyancha.com/search/company?q=%E5%B9%BF%E4%B8%9C%E7%9C%81&from=0'
all_data = []
# 发起请求并获取数据
for page_num in range(1, 100): # 假设最多有100页数据
url = f"{base_url}&page={page_num}"
companies_on_page = get_company_data(url)
all_data.extend(companies_on_page)
# 存储数据(例如到CSV、JSON文件或数据库)
with open('shandong_companies.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Additional Info']) # 根据实际数据字段调整列名
writer.writerows([data.values() for data in all_data])
阅读全文