爬取单页妹子图

import requests
from lxml import etree
import os
import time
url = 'http://www.meizitu.com/a/5593.html'

headers = {
    'Referer': 'http://www.meizitu.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'
}
response = requests.get(url,headers=headers)
html_ele = etree.HTML(response.text)

q_list = html_ele.xpath('//div[@id="picture"]/p/img/@src')
#判断有没有这个文件夹,如果有那么不创建,
if not os.path.exists('meizi'):
    #创建文件夹
    os.mkdir('meizi')
for tupian in q_list:
    response=requests.get(tupian,headers=headers)
    # name =tupian.split('/')[-1]
#s生成毫秒级时间戳
    c = time.time()
    name = int(round(c * 1000))
    ppp = str(name)
#保存图片
    with open('meizi/'+ppp+'.jpg','wb') as f:
        f.write(response.content)

### 使用 JsonPath 爬取豆瓣单页信息 JsonPath 是一种用于解析 JSON 数据的语言工具,类似于 XPath 对于 XML 的作用。豆瓣的部分页面可能通过 Ajax 动态加载数据并返回 JSON 格式的响应,因此可以使用 JsonPath 来提取这些动态加载的内容。 以下是基于 Python 和 `requests` 库以及 `jsonpath-ng` 或者类似的库来实现的一个示例: #### 安装依赖 首先需要安装必要的库: ```bash pip install requests jsonpath_ng ``` #### 示例代码 下面是一个完整的代码示例,展示如何使用 JsonPath 提取豆瓣某一页的信息(假设目标页面返回的是 JSON 响应)。 ```python import requests from jsonpath_ng import parse # 设置请求头以模拟浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0 Safari/537.36' } # 请求 URL (这里替换为目标页面的实际 API 地址) url = "https://api.douban.com/v2/movie/top250?start=0&count=10" response = requests.get(url, headers=headers) if response.status_code == 200: data = response.json() # 解析 JSON 路径 json_expr_title = parse('$.subjects[*].title') # 获取电影名称 json_expr_rating = parse('$.subjects[*].rating.average') # 获取评分 titles = [match.value for match in json_expr_title.find(data)] ratings = [float(match.value) for match in json_expr_rating.find(data)] # 打印结果 for title, rating in zip(titles, ratings): print(f"Title: {title}, Rating: {rating}") else: print("Failed to fetch the page:", response.status_code) ``` 此代码片段展示了如何发送 HTTP 请求获取 JSON 数据,并使用 `jsonpath_ng` 库中的 `parse()` 方法定义路径表达式,从而提取特定字段[^1]。 --- ### 关键点说明 - **JSON Path 表达式**: 上述代码中使用的 `$` 符号表示根节点,`.subjects[*]` 则匹配数组内的每一项对象。具体语法可以根据实际需求调整。 - **API 接口调用**: 如果豆瓣的目标页面并非直接提供 HTML 文档而是通过 AJAX 加载,则通常会有一个对应的 RESTful 风格接口供开发者查询。例如这里的 `/v2/movie/top250` 就是官方提供的公开 API[^2]。 - **错误处理**: 在真实场景下还需要考虑网络异常、超时等问题,建议增加 try-except 结构捕获潜在错误[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值