写的第一个爬虫脚本_20180815

本文介绍了一个简单的Python爬虫脚本,该脚本使用requests和BeautifulSoup库从网站抓取标题、图片链接及标签等信息,并将这些数据保存到本地文件中。通过分析网页结构并定位所需元素的选择器,爬虫能够有效地完成指定页面的数据抓取。

第一个爬虫脚本,只爬取了一个标题,一张图片,和一个标签,内容如下:

from bs4 import BeautifulSoup
import requests

def paChong(n):

    if not isinstance(n,int):
        print('Please input "int" ,like 1 or 2 .')
        exit

    n_page = n
    page_num = 1
    f = open('123.txt', 'a',encoding='utf-8')

    for i in range(1,n_page+1):
        pk = 1
        urls = 'https://www.baomi.net/page/%d' % i
        f.write( "  --------  " + urls + "  --------\n\n")

        def re_img(a):
           index1 = a.rfind('src=')
           index2 = a.rfind('&h')
           return a[index1+4:index2]


        wb_data = requests.get(urls)
        soup = BeautifulSoup(wb_data.text, 'lxml')
        titles = soup.select('#page-content > div > div > div > div > div.ajax-load-box.posts-con > div > div > div.posts-default-box > div.posts-default-title > h2 > a')
        imgs = soup.select('#page-content > div > div > div > div > div > div > div > div > a > img')
        labels = soup.select('#page-content > div > div > div > div > div > div > div > div.posts-default-box > div.posts-default-content > div.posts-text')


        for title,img,label in zip(titles,imgs,labels):
            data = {
                'title':title.get('title'),
                'img':re_img(img.get('src')),
                'label':label.get_text()[0:-8]
            }

            f.write("--" + str(page_num) + '-' + str(pk) + "--\n")
            f.write(data['title']+'\n')
            f.write(data['img']+'\n')
            f.write(data['label'])
            f.write('\n\n\n\n')
            pk += 1

        page_num += 1

    f.close()

paChong(10)

<think>嗯,用户让我介绍一下如何一个简单的爬虫脚本。首先,我需要理解用户的需求。他们可能刚接触爬虫,想要一个基础的示例,所以需要从零开始讲解。 我应该先解释爬虫的基本概念,但用户直接要步骤,可能已经了解一些。接下来,得选一个合适的编程语言,Python是比较常见的选择,尤其是用requests和BeautifulSoup库,这对新手友好。 然后,我需要分步骤说明。第一步是安装必要的库,用户可能需要指导如何安装,比如用pip命令。第二步是发送HTTP请求,这里要演示如何用requests.get获取网页内容,还要处理可能的异常,比如超时或请求失败。 第三步是解析HTML内容,用BeautifulSoup的例子,解释如何提取特定标签的数据。比如找所有的<h2>或者<a>标签。第四步是保存数据,可以演示如何存到文本文件或者CSV,这样用户有实际输出的例子。 还要考虑注意事项,比如遵守robots.txt,设置间隔避免被封,还有合法性问题。这些对新手来说很重要,容易忽略的部分。 用户可能需要完整的代码示例,所以最后要提供一个可以运行的脚本,并解释每个部分的作用。同时提醒可能的错误,比如标签不存在时的处理,或者网络问题。 可能用户之后会想扩展功能,比如爬取多个页面或处理动态内容,但这次保持简单。确保代码清晰,步骤明确,没有复杂的概念,让用户能顺利上手。</think>我将分步骤为您介绍如何编一个基础网页爬虫脚本(使用Python语言): 1. **环境准备** ```python # 安装所需库(命令行执行) pip install requests beautifulsoup4 ``` 2. **基础结构搭建** ```python import requests from bs4 import BeautifulSoup # 设置目标URL(以示例网站为例) url = "https://books.toscrape.com/" # 发送HTTP请求 response = requests.get(url, timeout=10) response.encoding = 'utf-8' # 设置编码 # 检查响应状态 if response.status_code == 200: # 解析HTML内容 soup = BeautifulSoup(response.text, 'html.parser') else: print("请求失败,状态码:", response.status_code) ``` 3. **数据提取示例** ```python # 提取所有图书标题(根据实际网页结构调整选择器) book_titles = soup.select('h3 > a') for title in book_titles: print(title.get_text(strip=True)) # 提取价格信息 prices = soup.select('.price_color') for price in prices: print(price.get_text()) ``` 4. **数据存储基础版** ```python # 保存到文本文件 with open('book_data.txt', 'w', encoding='utf-8') as f: for title, price in zip(book_titles, prices): f.write(f"书名:{title.get_text()}, 价格:{price.get_text()}\n") ``` **注意事项**: 1. 遵守网站的`robots.txt`协议 2. 添加请求间隔(建议至少2秒) 3. 添加异常处理: ```python try: response = requests.get(url, timeout=10) except requests.exceptions.RequestException as e: print("请求异常:", e) ``` 完整示例代码: ```python import requests from bs4 import BeautifulSoup import time url = "https://books.toscrape.com/" try: response = requests.get(url, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') books = soup.select('article.product_pod') with open('books.csv', 'w', encoding='utf-8') as f: f.write("书名,价格\n") for book in books: title = book.h3.a.get_text(strip=True) price = book.find('p', class_='price_color').get_text() f.write(f'"{title}","{price}"\n') print("数据抓取完成!") except Exception as e: print("发生错误:", e) ``` **扩展建议**: - 添加`User-Agent`头部模拟浏览器 - 使用`random`模块随机化请求间隔 - 考虑使用`Selenium`处理JavaScript渲染的页面 - 添加代理支持应对反爬机制 请在使用前确保: 1. 目标网站允许爬取 2. 不会对目标服务器造成过大压力 3. 遵守相关法律法规
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值