python爬取京东设备信息
时间: 2025-01-15 08:09:56 浏览: 37
### 使用 Python 实现京东商品(设备类)数据的网络爬虫
为了实现这一目标,可以采用 `requests` 库来发送 HTTP 请求获取网页内容,并利用 `BeautifulSoup` 或者 `lxml` 来解析 HTML 文档提取所需的信息。考虑到反爬机制的存在,在请求头中适当设置 User-Agent 和其他参数是非常必要的。
#### 准备工作
安装所需的库可以通过 pip 完成:
```bash
pip install requests beautifulsoup4 lxml
```
#### 获取页面内容
构建一个函数用于发起 GET 请求并返回响应对象的内容:
```python
import requests
from bs4 import BeautifulSoup
def get_page_content(url, headers=None):
try:
response = requests.get(url=url, headers=headers)
if response.status_code == 200:
return response.text
else:
print(f"Failed to retrieve page content with status code {response.status_code}")
return None
except Exception as e:
print(e)
return None
```
#### 解析HTML文档
定义另一个函数负责处理接收到的数据流,从中抽取特定标签内的文本信息:
```python
def parse_html(html_str):
soup = BeautifulSoup(html_str, 'lxml')
items = []
for item in soup.select('.gl-item'):
title = item.select_one('div.p-name em').get_text(strip=True).replace('\n', '')
price = item.select_one('strong i').string
sku_id_element = item.attrs['data-sku']
detail_url = f"https://item.jd.com/{sku_id_element}.html"
product_info = {
"title": title,
"price": float(price),
"detail_url": detail_url
}
items.append(product_info)
return items
```
上述代码片段展示了如何定位到每一件商品对应的 DOM 节点,并进一步读取出名称、价格等字段的具体值[^2]。
#### 主逻辑控制
最后一步就是把前面两个部分串联起来形成完整的爬取过程:
```python
if __name__ == '__main__':
url = 'https://list.jd.com/list.html?cat=9987%2C653%2C655&page='
user_agent = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
all_items = []
# 假设只抓取前两页作为示范
for page_num in range(1, 3):
full_url = url + str(page_num)
html_data = get_page_content(full_url, headers=user_agent)
if not html_data:
continue
parsed_results = parse_html(html_data)
all_items.extend(parsed_results)
for idx, each_item in enumerate(all_items[:10], start=1):
print(f"{idx}: Title={each_item['title']}, Price={each_item['price']} RMB, Detail URL={each_item['detail_url']}")
```
这段脚本会遍历指定范围内的多个列表页,收集其中所有的产品条目,并最终打印出前十项的结果摘要。
阅读全文
相关推荐















