下面是使用Python3编写抓取网页和只抓网页图片的脚本的完整攻略:
抓取网页的脚本
前置知识
在开始编写抓取网页的脚本之前,需要先了解一下Python中的以下库:
- requests:用于发送HTTP请求,即访问网页。
- beautifulsoup4:用于解析HTML代码,即从网页中提取所需的内容。
编写步骤
- 导入requests和beautifulsoup4库。
import requests
from bs4 import BeautifulSoup
- 确定要访问的网页链接。
url = "https://www.example.com"
- 发送HTTP请求,获取网页的HTML代码。
response = requests.get(url)
html = response.text
- 用beautifulsoup4解析HTML代码,提取所需的内容。
soup = BeautifulSoup(html, "html.parser")
title = soup.title.string
- 打印所需的内容。
print(title)
示例说明
以抓取百度首页上的标题为例。
import requests
from bs4 import BeautifulSoup
url = "https://www.baidu.com"
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
title = soup.title.string
print(title)
运行结果:
百度一下,你就知道
只抓网页图片的脚本
前置知识
在开始编写只抓网页图片的脚本之前,需要先了解一下Python中的以下库:
- requests:用于发送HTTP请求。
- os:用于创建保存图片的文件夹。
- BeautifulSoup:用于解析HTML代码。
- re:用于正则表达式匹配。
编写步骤
- 导入需要用到的库。
import requests
import os
from bs4 import BeautifulSoup
import re
- 确定要访问的网页链接。
url = "https://www.example.com"
- 发送HTTP请求,获取网页的HTML代码。
response = requests.get(url)
html = response.text
- 用beautifulsoup4解析HTML代码,找到所有的图片链接。
soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")
- 创建保存图片的文件夹。
if not os.path.exists("images"):
os.mkdir("images")
- 遍历所有的图片链接,下载并保存图片。
for img in img_tags:
src = img.get("src")
if src is None:
continue
if re.match(r"^http(s)?://", src):
img_url = src
else:
img_url = url + src
img_name = img_url.split("/")[-1]
try:
img_data = requests.get(img_url, timeout=5).content
except:
continue
with open("images/" + img_name, "wb") as fp:
fp.write(img_data)
示例说明
以抓取百度图片搜索结果页的图片为例。
import requests
import os
from bs4 import BeautifulSoup
import re
url = "https://image.baidu.com/search/index?tn=baiduimage&word=cat"
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")
if not os.path.exists("images"):
os.mkdir("images")
for img in img_tags:
src = img.get("src")
if src is None:
continue
if re.match(r"^http(s)?://", src):
img_url = src
else:
img_url = "https:" + src
img_name = img_url.split("/")[-1]
try:
img_data = requests.get(img_url, timeout=5).content
except:
continue
with open("images/" + img_name, "wb") as fp:
fp.write(img_data)
运行结果:
该脚本将抓取百度图片搜索“猫”这个关键字的结果,并将所有图片保存在images文件夹中。
注意事项
需要注意的是,在抓取网页和只抓取网页图片的脚本中,都需要注意HTTP请求的响应代码,以判断请求是否成功。同时,在下载图片时要注意异常处理,防止程序崩溃。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python3编写抓取网页和只抓网页图片的脚本 - Python技术站