第一个爬虫脚本

本文分享了一个简单的爬虫脚本实现过程,该脚本能从指定网站抓取图片并保存到本地。通过分析HTML标签,利用正则表达式匹配图片链接,实现了基本的多页图片抓取功能。

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

这是制作的第一个爬虫脚本,主要实现的功能就是解析指定网站中指定的照片地址,然后保存到本地。

代码部分:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

i = 0
def get_content(page):
    global i
    page = str(page)
    url = "网站地址?page=" + page #保证可以获取多页内容
    html = urlopen(url)
    bsObj = BeautifulSoup(html, "html.parser")
    images = bsObj.findAll("img", {"src": re.compile("\d+\.jpg")}) #使用正则把图片的URL筛选出来

    while i < 5: #i是页数
        for image in images: #使用for循环抓取不同页数的图片
            photo_url = "网站的绝对地址" + image["src"] #图片地址
            print(photo_url) #输出图片地址
            f = open(str(re.sub(r"\D+", "0", image["src"])) + ".jpg", "wb")  # 利用正则替换命名图片名称,并保存到当前文件夹
            req = urlopen(photo_url)
            buf = req.read()  # 读出文件
            f.write(buf)  # 写入文件
            print("正在下载中...")
        i = i + 1
        print ("这是第", i, "页")
        get_content(i) #进行下一页的抓取

get_content(i)

这是我完成的第一个比较成功的爬虫脚本,整段代码很个性,不具有代表性。实现的功能也少之又少,可能不能被别的网址所使用,主要是看思路。写完这个脚本以后,我暂时总结出了制作爬虫脚本的思路,可能不是很严谨。

  1. 找到需要爬取网站的HTML标签的规律
  2. 选择合适的筛选条件,可以利用正则或者是标签数量等条件
  3. 判断采集的信息是否有效
  4. 保存本地或数据库

这段代码是第一个爬取图片的代码,虽然花费了很多时间,解决了一些问题,但仍然存在一些问题需要在以后的版本中解决:

  1. 抓取更多不同的网页
  2. 利用异常机制控制页数,在没有图片的时候停止
  3. 在没有图片停止之后,自动开始抓取另一网页内容
  4. 改变文件保存的位置

本来是想多定义几个函数看着更清楚一些,但是能力有限,改的改的最后全都放到一个函数中了,不过下载图片的目的是实现了,还是不错的。

### 如何使用Python编写爬虫脚本 #### 基础概念 网络爬虫是一种自动化程序,用于从互联网上抓取数据。它可以通过模拟浏览器行为访问网页并提取所需的信息。为了实现这一目标,开发者通常需要具备一定的编程技能以及对HTTP/HTTPS协议的理解[^1]。 #### 技术需求 在开发过程中,熟悉以下技术是非常重要的: - **Python基础知识**:包括但不限于语法、控制流、常用的数据结构(如列表、字典)、函数定义及调用等。 - **HTML/CSS基础**:理解标记语言及其样式规则有助于解析页面内容。 - **字符串处理能力**:熟练运用正则表达式或其他方法来匹配特定模式的内容。 - **第三方库支持**:利用现有的开源项目可以极大地简化复杂任务的完成过程[^2]。 #### 工具推荐 对于初学者来说,以下几个常用的Python包可以帮助快速构建自己的爬虫应用: - `requests` 或者更强大的异步版本 `aiohttp` 来发送请求; - 使用 BeautifulSoup (`bs4`) 进行 HTML/XML 文档分析; - Selenium 如果遇到 JavaScript 渲染后的动态加载内容; 下面给出一个基于上述提到的技术栈的小型实例: ```python import requests from bs4 import BeautifulSoup def fetch_webpage(url): try: response = requests.get(url, timeout=5) if response.status_code == 200: return response.text else: print(f"Failed to retrieve webpage {url}. Status code:",response.status_code ) return None except Exception as e: print("Error occurred while fetching the URL.", str(e)) return None def parse_html(html_content): soup = BeautifulSoup(html_content,'html.parser') titles = [] for title_tag in soup.find_all('title'): titles.append(title_tag.string.strip()) paragraphs = [] for p_tag in soup.find_all('p'): paragraphs.append(p_tag.getText().strip()) return {"titles":titles,"paragraphs":paragraphs} if __name__=="__main__": url="https://example.com" html_data =fetch_webpage(url) if not html_data : exit() parsed_results =parse_html(html_data ) for idx,title in enumerate(parsed_results['titles']): print(f"{idx+1} Title:{title}") for para in parsed_results ['paragraphs']: print(para[:70]+"...") ``` 此段代码展示了如何通过Requests获取指定网址上的资源,并借助BeautifulSoup解析其中的部分文本信息[^3]。 #### 注意事项 尽管爬虫为我们提供了便利,但在实际操作时也需注意遵循各站点的服务条款及相关法律法规,合理合法地开展活动[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值