python爬虫案例,爬取两千个数据
时间: 2024-12-31 19:36:57 浏览: 14
### Python 爬虫大规模数据采集示例
为了实现从网页上抓取大量数据(例如2000条记录),可以使用`requests`库来发送HTTP请求并接收响应,再通过`BeautifulSoup`解析HTML文档。下面是一个完整的Python脚本例子,用于模拟爬取一个假设网站上的商品列表页面,并提取其中的商品名称和价格信息。
#### 安装依赖库
首先需要确保已经安装了必要的第三方模块:
```bash
pip install requests beautifulsoup4 pandas openpyxl
```
#### 编写爬虫代码
接下来编写具体的爬虫逻辑如下所示:
```python
import time
from random import randint
import requests
from bs4 import BeautifulSoup as soup
import pandas as pd
def fetch_page(url, headers=None):
"""获取单页内容"""
try:
response = requests.get(url=url, timeout=30, headers=headers)
if response.status_code == 200:
return response.text
else:
print(f"Failed to get page {url}, status code: {response.status_code}")
return None
except Exception as e:
print(e)
def parse_items(html_content):
"""解析每一页中的项目信息"""
items_list = []
sp = soup(html_content,'html.parser')
item_containers = sp.find_all('div', class_='item-container')[:2000]
for container in item_containers:
name_tag = container.h2.a.string.strip()
price_tag = container.span['data-price']
items_list.append({
'name': name_tag,
'price': float(price_tag),
})
return items_list
if __name__ == '__main__':
base_url = "https://example.com/products?page={}"
user_agent = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
all_data = []
start_time = time.time()
for i in range(1, 10): # 假设共有9页,每页最多有约200个项目
current_url = base_url.format(i)
html_text = fetch_page(current_url,user_agent)
if not html_text:
continue
parsed_results = parse_items(html_text)
all_data.extend(parsed_results)
sleep_duration = randint(1, 3) # 防止被封IP设置随机等待时间
time.sleep(sleep_duration)
if len(all_data)>=2000:
break
end_time = time.time()
elapsed_time = round(end_time-start_time,2)
print(f'共收集到{len(all_data)}条有效记录,在{elapsed_time}秒内完成')
df = pd.DataFrame(all_data)
output_file_path = './output.xlsx'
df.to_excel(output_file_path,index=False,sheet_name='Sheet1')
print(f'已保存至文件:{output_file_path}')
```
此段程序会遍历指定范围内的分页链接,逐个访问并将结果存储在一个DataFrame对象里;当累积的数据量达到预定义的数量时停止循环。最后将所有的数据导出成Excel表格形式以便后续处理分析[^1]。
阅读全文