利用python设计一段代码,①使用lxml.etree提取一个网页div标签里的li标签的文字内容②使用lxml.etree提取一个网页div标签里的b标签的文字内容③将b标签的内容作为key,li标签的内容为value,储存到一个json文件中
时间: 2024-12-17 15:45:46 浏览: 6
要完成这个任务,首先你需要安装 `lxml` 和 `json` 库,如果你还没有安装,可以使用以下命令:
```bash
pip install lxml requests
```
然后,你可以编写以下 Python 代码来实现你的需求:
```python
import requests
from lxml import etree
import json
def extract_data(url):
# 发送请求获取HTML内容
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
return None
# 使用lxml解析HTML
parser = etree.HTMLParser()
tree = etree.fromstring(html_content, parser)
div_data = {} # 存储结果的字典,键值对形式
for div in tree.xpath("//div"):
li_texts = [li.text.strip() for li in div.findall("li")]
b_text = div.findtext(".//b") or ""
if b_text:
# 将b标签的内容作为key,li标签的内容为value
div_data[b_text] = li_texts
# 将数据写入json文件
with open('output.json', 'w') as f:
json.dump(div_data, f, indent=2)
# 用你要抓取的网页URL替换这里
url = "https://example.com" # 替换为你需要抓取的实际URL
extract_data(url)
```
这段代码首先发送一个 GET 请求到指定的 URL,然后使用 `lxml` 解析返回的 HTML 内容。接着,它遍历每个 `<div>` 标签,找到所有的 `<li>` 和 `<b>` 子元素,并将 `<b>` 的文本作为键,`<li>` 的文本列表作为值存入字典。最后,将字典内容写入名为 `output.json` 的 JSON 文件。
阅读全文