用Python爬取网上的图片或者文字的方法笔记

本文介绍了一种使用Python进行网页爬取的方法,包括如何抓取图片和新闻文章的文字内容。通过使用urllib和BeautifulSoup库,演示了从凤凰网抓取图片和从新浪网抓取新闻的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说直接上代码

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 23 10:44:47 2018

@author: fengl
"""
#Ex7_5.py
import urllib.request
import re

def getHtml(url):
    html=urllib.request.urlopen(url).read()
    html= html.decode('utf-8')
    return html

def getImg(html):
    #构建正则表达式,从页面代码里提取出图片url地址。
    img_re=re.compile(r'(?<=src=")\S+?jpg')
    #输出找到图片的类型
    print("the type of html is :",type(html))
    #输出整个html的结构
    print(html)
    #返回一个装img下载地址的集合
    img_list=img_re.findall(html)
    return img_list

def getUrl(source):
    if source.startswith("//"):
        url = "http:"+source
    else:
        url=source
    
    return url
#调用getHtml函数输入网址   
html=getHtml('http://www.ifeng.com')
#调用getImg函数得到集合
img_list = getImg(html)
print("正在下载图片......")

for i in range(len(img_list)):
    print(img_list[i])
    #调用urlretrieve方法把图片下载到指定地址
    urllib.request.urlretrieve(getUrl(img_list[i]),'.\img\%s.jpg' % i)
    
print("完成图片下载......")

注意要在文件的同一级地址下创建一个img为名的文件夹,而且只能读取后缀名为jpg的图片,

需要读取png图片只需稍加修改,把代码中的png改为jpg即可

以上是爬取图片的代码

下面分享的是爬取文字的代码

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 23 21:14:54 2018

@author: fengl
"""
#Ex7_8.py
import urllib.request
from bs4 import BeautifulSoup
import re

def getHtml(url):
    html=urllib.request.urlopen(url).read()
    html= html.decode('utf-8')
    return html

html = getHtml("https://news.sina.com.cn/c/xl/2018-12-01/doc-ihmutuec5171858.shtml")
bsObj = BeautifulSoup(html, "html.parser")
downloadList=bsObj.select('p')

text_re=re.compile(r'<p>(\s+?\S+?)</p>')
text_list=[]
for txt in downloadList:
    html="{}".format(txt)
    text_list+=text_re.findall(html)
print(text_list)

这段代码获取的是p标签中的文字。

### 小红书评论数据爬取方法 为了实现小红书平台上特定关键词笔记的评论数据抓取,可采用基于`DrissionPage`库的方法来模拟浏览器行为完成登录和页面交互过程[^3]。具体而言,在导入必要的包之后,创建一个WebPage实例对象用于控制浏览器动作。 ```python import time from DrissionPage import WebPage, Actions import csv import random import re wp = WebPage() wp.get('https://www.xiaohongshu.com/explore') ``` 在成功启动浏览器并访问目标网站后,由于涉及到用户认证机制的存在,建议采取手动输入账号密码的方式完成首次登陆验证。这一步骤对于绕过反爬虫措施至关重要,因为许多社交平台会针对异常频繁请求做出限制响应甚至封禁IP地址的行为。 一旦完成了登录环节,则可以根据实际需求编写函数定位到含有评论区元素的位置,并提取其中的文字信息作为后续处理的数据源。考虑到网页加载速度等因素的影响,适当加入等待时间有助于提高程序稳定性。 ```python def fetch_comments(keyword): search_box = wp.ele('tag:input[name="query"]') # 假设这是搜索框的选择器 search_box.clear().send_keys(keyword).submit() time.sleep(random.uniform(2, 4)) # 随机休眠一段时间 comments_section = wp.eles('.comment-item') # 替换成真实的CSS选择器表达式 all_texts = [] for comment in comments_section: text = comment.text.strip() cleaned_text = re.sub(r'\s+', ' ', text) all_texts.append(cleaned_text) return all_texts ``` 值得注意的是,上述代码片段仅为示意性质;真实环境中还需要考虑更多细节问题,比如分页加载、异步更新等内容动态变化情况下的应对策略。此外,应当遵循各网络服务提供商的服务条款,合法合规地开展数据获取活动[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值