随笔 - 437  文章 - 0 评论 - 342 阅读 - 51万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1.安装模块

使用国内镜像源安装

pip install beautifulsoup4  -i  http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install requests -i  http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2.Demo

复制代码
import requests
from bs4 import BeautifulSoup


def get_images(page):
    response = requests.get(f'https://www.ishsh.com/gaoqing/page/{page}', verify=False)
    data = response.content.decode('utf8')

    with open(f'a{page}.html', 'wb') as f:
        f.write(response.content)
    soup = BeautifulSoup(data, 'html.parser')
    print(soup.prettify())
    images = soup.find_all('img')
    for item in images:
        try:
            if page > 1:
                data_original = item['src']
            else:
                data_original = item['data-original']
            index = data_original.find('&src')
            print(data_original[index + 5:])
        except KeyError as e:
            print('无此节点')


def get_image():
    response = requests.get(f'https://www.ishsh.com/gaoqing', verify=False)
    data = response.content.decode('utf8')
    print(data)
    soup = BeautifulSoup(data, 'html.parser')
    img = soup.find('img')
    print(img)
    print(img['data-original'])


def select_image():
    response = requests.get('https://www.ishsh.com/gaoqing', verify=False)
    data = response.content.decode('utf8')
    soup = BeautifulSoup(data, 'html.parser')
    # imgs = soup.select('img')
    imgs = soup.select('.img')
    for item in imgs:
        print(item)
        # print(type(item))
        # print(item.string)
        # print(item.content)
        # print(item.get_text())
        print(item['title'])


if __name__ == '__main__':
    page = 1
    get_images(1)

# print(soup.title) # 选择标签,选择第一个
# print(soup.title.name)# 获取标签名
# print(soup.title.string)# 标签内容
# print(soup.img['src'])# 获取属性
# print(soup.head.title.string)# 嵌套选择
# print(soup.p.contents)# 获取p标签下所有子标签的内容
# print(soup.p.children)#获取p标签下所有子标签的可迭代对象
#
# print(soup.a.parent)# 获取a标签的父节点
# print(list(enumerate(soup.img.parent)))
# print(next(soup.span.next_siblings))# 获取后面的兄弟节点
# # print(next(soup.span.previous_sublings))# 获取前面的兄弟节点
# print(soup.div.next_silbing)# 获取下一个兄弟节点
# print(soup.div.previous_sinbling)#获取前一个兄弟节点

# print(soup.find_all('img'))# 根据标签名查找元素
# print(soup.find_all(attrs={'class':'img'}))# 根据属性查找元素
# print(soup.find_all(text='''丝袜美腿'''))# 根据内容查找元素
复制代码

3.备注

find_all,find,select等方法查到的bs4.element.Tag类型的对象,可继续使用这些方法进行链条查询

参考https://www.cnblogs.com/zhaof/p/6930955.html


posted on   chester·chen  阅读(575)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-03-28 AutoMapper
点击右上角即可分享
微信分享提示