Python如何简单爬取免费网站图片数据?

简单说说Python爬取图片数据的一个流程:

1、发送请求:调用requests模块里的get请求方法对于url地址发送请求,并且携带上headers请求头伪装,最后用自定义变量名接收返回数据;

2、获取数据:调用re模块里的findall方法,找到所有我们想要的数据;

3、发送请求:此次请求是发送给目标图片所在的网页地址;

4、获取数据;

5、解析图片:因为我们爬取图片肯定不是只想要一张,那爬取大量图片呢,就需要找到这些图片的共同规律,从规律入手。

6、保存数据;

为什么会发送两次请求呢?答:第一是向主页面地址发送请求,第二是向目标图片的详细地址发送请求;

示例:爬取彼岸壁纸网站的图片

#导入数据请求模块
import requests
import re #正则表达式模块

url='http://www.netbian.com/dongman/index_2.htm'       #请求链接

#模拟浏览器 开发者工具:headers->request headers->UA(User Agent)
#把爬虫程序伪装成浏览器去访问,防止被反爬

headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/96.0.4664.45 Safari/537.36'
}          #User-Agent用户代理(浏览器基本的身份信息)


'''
1、发送请求
调用requests模块里的get请求方法对于url地址发送请求,并且携带上headers请求头伪装,最后用自定义变量名接收返回数据
<response [200]:响应对象>
response:回复
<>:表示对象
200:状态码表示请求成功
'''

response=requests.get(url=url,headers=headers)
response.encoding = 'GBK'  #不加这一行的话获取网页代码若是有中文会出现乱码情况  因为目的网页代码的编码格式是gbk

''''
2.获取数据
findall('什么数据','什么地方')  调用re模块里的findall方法,找到所有我们想要的数据
从response.text<网页源代码>里面。去找<a href='/desk/(\d+).htm'>这段数据,其中(\d+)这段数据就是我们要的内容
\d+:表示匹配多个数字
'''

#print(response.text) #获取响应文本数据<网页源代码>

#寻找图片信息规律;彼岸壁纸网站的提取图片id
img_id_list = re.findall('<a href="/desk/(\d+).htm"',response.text)#找到所有我们想要的数据
#for循环遍历,把列表里面元素一个一个提取出来
for img_id in img_id_list:
    #构建图片详情页链接;  f'{}'字符串格式化方法
    link = f'http://www.netbian.com/desk/{img_id}.htm'    #某一张图片的详细链接地址
    #print(link)
'''
3、发送请求
4、获取数据
5、解析图片
'''
    response_1=requests.get(url=link, headers=headers)
    response_1.encoding='gbk'
    img_url,img_title=re.findall('<img src="(.*?)" alt="(.*?)"',response_1.text)[0]
'''
6、保存数据
获取图片数据->发送请求,然后获取数据
response.content-->获取图片/音频/视频/特定格式文件二进制数据
'''
    img_content = requests.get(url=img_url, headers=headers).content
    with open('img1/'+ img_title + '.jpg', 'wb') as f: 
        f.write(img_content)   #此处的img1是新建的空的文件夹,此文件跟代码文件放在同一目录下;
    print(img_url, img_title)



运行结果如下图:

此示例中的一些方法介绍:

(1)response=requests.get(url=url,headers=headers):构造一个向服务器请求资源的url对象,这个对象是request库内部生成的。

response=requests.get(url,params,**kwargs)

  • url:需要爬取的网站地址;
  • params:url中的额外参数,字典或者字节流格式,是可选参数;
  • **kwargs:12个控制访问的参数。

(2)findall():此方法是re正则库中的方法,它将所有匹配到的字符,以列表的形式返回。

findall(pattern, string, flags=0)
作用:获取字符串中所有能匹配的字符串,并以列表的形式返回。
pattern: 匹配的正则表达式
string:被匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,是否匹配多行等 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要使用Python爬取网站图片,可以使用requests和beautifulsoup4库进行网页爬取和解析。具体步骤如下: 1. 使用requests库获取网页内容: ```python import requests url = 'http://example.com' response = requests.get(url) ``` 2. 使用beautifulsoup4库解析网页内容,并找到所有图片标签: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') img_tags = soup.find_all('img') ``` 3. 遍历所有图片标签,获取图片链接,并下载图片到本地: ```python import os # 创建文件夹用于保存图片 if not os.path.exists('images'): os.makedirs('images') for img in img_tags: img_url = img['src'] img_name = img_url.split('/')[-1] # 通过链接获取图片名 # 下载图片到本地 with open(f'images/{img_name}', 'wb') as f: f.write(requests.get(img_url).content) ``` 注意:在爬取网站图片时,需要注意网站的版权问题和爬虫协议,避免侵犯他人权益。 ### 回答2: 要使用Python爬取网站图片,首先需要安装 `requests` 和 `BeautifulSoup` 两个库。 以下是基本的爬取图片的步骤: 1. 导入所需库: ```python import requests from bs4 import BeautifulSoup ``` 2. 使用 `requests` 发送GET请求并获取网页内容: ```python url = 'http://example.com' # 替换成目标网站的URL response = requests.get(url) ``` 3. 使用 `BeautifulSoup` 解析网页内容: ```python soup = BeautifulSoup(response.text, 'html.parser') ``` 4. 找到包含图片的标签或元素,例如 `<img>` 标签: ```python image_tags = soup.find_all('img') ``` 5. 遍历找到的图片标签,获取图片URL,并保存图片: ```python for tag in image_tags: image_url = tag.get('src') # 获取图片URL img_data = requests.get(image_url).content # 使用requests获取图片二进制数据 with open('image.jpg', 'wb') as f: f.write(img_data) # 将图片数据写入到文件 ``` 注意,以上代码仅为示例,实际应用中可能需要根据目标网站的具体结构进行适当的调整。 此外,还可以使用其他库如 `urllib` 或 `Scrapy` 来实现网站图片爬取。 ### 回答3: 要爬取网站图片,首先需要安装并引入相应的库,例如requests库、BeautifulSoup库和urllib库。下面是一个爬取网站图片的基本步骤: 1. 导入相关库: ``` import requests from bs4 import BeautifulSoup import urllib ``` 2. 通过requests库发送HTTP请求获取网页的内容: ``` url = "网站URL" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) ``` 3. 使用BeautifulSoup库解析网页内容: ``` soup = BeautifulSoup(response.text, "html.parser") ``` 4. 找到网页中图片的标签(一般是`<img>`标签),通过BeautifulSoup库提供的方法获取图片的URL: ``` image_tags = soup.find_all("img") for image_tag in image_tags: image_url = image_tag["src"] print(image_url) ``` 5. 下载图片: ``` urllib.request.urlretrieve(image_url, "保存路径/文件名") ``` 以上是简单示例,实际爬取过程中还需考虑网页加载方式(AJAX、动态加载等)、反爬机制和异常处理等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值