爬起url = "http://pic.netbian.com/4kqiche/" 2.get请求参数处理 resp = requests.get(url=url,headers=headers) 3.数据解析:src的属性值 alt属性 4.提取子页面图片链接和图片名字 请求图片进行持久化存储
时间: 2024-04-21 16:28:12 浏览: 193
好的,您需要我解释这段代码的作用和实现过程,对吗?
这段代码的作用是从网站 http://pic.netbian.com/4kqiche/ 获取汽车图片的链接和名称,并将图片进行持久化存储。
1. 首先定义了一个 url 变量,表示要获取的网页地址。
2. 使用 requests 库向该地址发起了一个 get 请求,并将请求头部信息传入 headers 参数中。
3. 对返回的响应数据进行解析,通过解析 src 属性值和 alt 属性,提取出汽车图片的链接和名称。
4. 针对每个子页面的图片链接,进行请求并将其持久化存储。具体实现过程可能是用 requests 库获取图片二进制数据,再将其写入文件中。
相关问题
爬取url = "http://pic.netbian.com/4kqiche/" 2.get请求参数处理 resp = requests.get(url=url,headers=headers) 3.数据解析:src的属性值 alt属性 4.提取子页面图片链接和图片名字 请求图片进行持久化存储
好的,我来为您解释一下这段 Python 代码的具体实现过程。
```python
# 导入需要使用的库
import requests
from bs4 import BeautifulSoup
# 设置请求头部信息
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'}
# 定义待爬取的网页地址
url = "http://pic.netbian.com/4kqiche/"
# 发起 GET 请求获取响应数据
resp = requests.get(url=url, headers=headers)
# 对响应数据进行解析
soup = BeautifulSoup(resp.text, 'html.parser')
img_list = soup.find(id='main').find_all('img')
# 遍历每张图片,提取其链接和名称,并进行持久化存储
for img in img_list:
img_url = 'http://pic.netbian.com' + img['src']
img_name = img['alt'] + '.' + img['src'].split('.')[-1]
img_data = requests.get(img_url, headers=headers).content
with open(img_name, 'wb') as f:
f.write(img_data)
```
具体实现过程如下:
1. 导入需要使用的 requests 和 BeautifulSoup 库。
2. 设置请求头部信息,模拟浏览器的访问,防止被网站禁止访问。
3. 定义待爬取的网页地址。
4. 发起 GET 请求获取响应数据,并使用 BeautifulSoup 库对响应数据进行解析。
5. 在解析后的文档中,找到 id 为 "main" 的元素,然后找到其中的所有 img 标签,得到一个包含所有图片标签的列表。
6. 遍历图片标签列表,对每张图片进行处理,提取其链接和名称。
7. 使用 requests 库对图片链接发起 GET 请求获取图片二进制数据。
8. 将获取到的图片二进制数据存储到磁盘上的相应文件中。
from bs4 import BeautifulSoup import requests url='http://pic.netbian.com/4kqiche/' 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'} resp=requests.get(url=url, headers=headers,verify=False) soup = BeautifulSoup(resp.text, 'lxml') resp.encoding='gbk' div=soup.find_all('div',class_='clearfix') for divs in div: href='http://pic.netbian.com/tupian/31686.html'+divs.find('a')['href'] resp2=requests.get(url=url, headers=headers,verify=False) soup2=BeautifulSoup(resp2.text,'lxml') resp2.encoding='gbk' soup3=BeautifulSoup(resp2.text,'lxml') title=soup2.find('div',class_='photo-pic').find('img')['src'] title_name=title.split('/')[-1] addhref='http://pic.netbian.com'+title resp3=requests.get(url=title,headers=headers,verify=False) with open('img', 'wb') as f: f.write(resp3) f.close()改正这段代码
以下是改正后的代码:
```
from bs4 import BeautifulSoup
import requests
url = 'http://pic.netbian.com/4kqiche/'
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'
}
resp = requests.get(url=url, headers=headers, verify=False)
soup = BeautifulSoup(resp.text, 'lxml')
resp.encoding = 'gbk'
div = soup.find_all('div', class_='clearfix')
for divs in div:
href = 'http://pic.netbian.com/tupian/31686.html' + divs.find('a')['href']
resp2 = requests.get(url=href, headers=headers, verify=False)
soup2 = BeautifulSoup(resp2.text, 'lxml')
resp2.encoding = 'gbk'
title = soup2.find('div', class_='photo-pic').find('img')['src']
title_name = title.split('/')[-1]
addhref = 'http://pic.netbian.com' + title
resp3 = requests.get(url=addhref, headers=headers, verify=False)
with open(title_name, 'wb') as f:
f.write(resp3.content)
f.close()
```
改正的地方主要有:
1. 将发送 GET 请求的 url 参数改为 href,以获取正确的网页内容。
2. 修改保存图片的文件名,将 'img' 改为 title_name。
3. 在下载图片时,将 resp3 改为 resp3.content,以获取图片的二进制数据。同时,将文件名改为 title_name。
阅读全文