python爬虫--最简单版

文章讲述了如何使用Python爬虫,特别是通过Selenium库抓取租赁网站的商品数据,涉及数据采集、网站监测、数据分析、自动化操作,以及SEO优化和网络安全的相关应用。作者还分享了如何编写一个简单的爬虫脚本来实现这些功能。
摘要由CSDN通过智能技术生成

 工作需要然后就开始自学了一下。

Python爬虫可以用于解决以下问题:

  1. 数据采集:从互联网上抓取数据,包括文本、图片、音频、视频等,可以用于各种目的,例如建立数据集、分析市场趋势、获取最新新闻等。

  2. 网站监测:定期检查网站的状态和内容更新情况,例如检测网站是否正常运行、检测指定网页是否发生变化等。

  3. 数据分析:通过爬取网页上的数据,进行数据清洗、整理和分析,可以得出一些有用的信息和结论。

  4. 自动化操作:通过模拟人的操作行为,自动登录网站、填写表单、提交数据等,可以实现自动化的任务,例如批量下载文件、批量发送邮件等。

  5. SEO优化:爬取搜索引擎结果页面,分析关键词排名、竞争对手等信息,用于优化网站内容和策略,提高搜索引擎排名。

  6. 网络安全:爬取网站的漏洞信息,进行漏洞扫描和安全评估,帮助网站提高安全性。

总之,Python爬虫可以帮助我们获取、处理和分析网页上的各种信息,为我们解决各种问题提供了便利。

最简单那就是这样

调用浏览器来爬取租赁网站的商品数据,可以使用Python的Selenium库。

首先,确保已经安装了Selenium库和对应的浏览器驱动程序。根据使用的浏览器,下载对应的驱动程序,并将其添加到系统的PATH中。

接下来,可以使用以下代码来调用浏览器并进行自动化操作:

from selenium import webdriver

# 设置浏览器驱动程序路径
driver_path = "path_to_driver.exe"  # 将path_to_driver.exe替换为实际的驱动程序路径

# 创建浏览器实例
driver = webdriver.Chrome(executable_path=driver_path)  # 使用Chrome浏览器,也可以使用其他浏览器

# 打开租赁网站
driver.get("https://www.example.com")  # 将https://www.example.com替换为目标租赁网站的URL

# 进行登录等操作(根据具体网站的登录方式进行操作)

# 执行爬取操作(根据具体网站的 HTML 结构和爬取需求进行操作)

# 关闭浏览器
driver.quit()

在代码中,路径 path_to_driver.exe 需要替换为实际的驱动程序路径。另外,https://www.example.com 需要替换为目标租赁网站的URL。根据具体网站的登录方式和HTML结构,可以通过操作浏览器进行登录和爬取操作。

需要注意的是,使用浏览器进行爬取会比普通的HTTP请求耗费更多的资源和时间,所以在设计爬虫时需要注意控制爬取速度,并合理利用浏览器的缓存等机制,以减少重复请求。另外,也要遵守网站的爬虫协议,避免给网站造成不必要的负担。

然后我自己写了一个就是这样的,基本上都有注释,很容易看的懂得了

# -*- coding: utf-8 -*-
import logging
import time
import csv
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')#%(asctime)s 将会是日志条目的时间戳。%(levelname)s 将会是日志级别(例如 'INFO'、'WARNING'、'ERROR' 等)。%(message)s 就是实际的日志信息。
KEY_WORD = input('请输入你想要获取商品数据: ')    #把商品名称输入到搜索框
CSV_FILE = f'易点云{KEY_WORD}商品数据.csv'    #创建csv文件
PAGE_COUNT = 1  # 要爬取的页数
def drop_down(driver: webdriver.Chrome) -> None:
    """执行页面滚动的操作
for x in range(1, 12, 2): - 这一行创建了一个从1开始,以2为步长的序列,所以它会遍历1, 3, 5, 7, 9, 11。
time.sleep(1) - 这一行使程序暂停1秒。
j = x / 9 - 这一行计算x除以9的结果,并存储在变量j中。
js = f'document.documentElement.scrollTop = document.documentElement.scrollHeight * {j}' - 这一行创建了一个JavaScript字符串,该字符串设置文档的滚动位置。
driver.execute_script(js) - 这一行执行上述JavaScript代码。"""
    for x in range(1, 12, 2):
        time.sleep(1)
        j = x / 9
        js = f'document.documentElement.scrollTop = document.documentElement.scrollHeight * {j}'
        driver.execute_script(js)
def get_shop_info(driver: webdriver.Chrome, csv_writer: csv.DictWriter) -> None:
    wait = WebDriverWait(driver, 10)
    try:
        ul = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pro-list-con ul')))  #获取页面pro-list-con下的多个ul
    except Exception as e:
        logging.error(f'Failed to get ul element: {e}')   #获取不到页面pro-list-con下的多个ul,就抛出错误
        return
    else:
        lis = ul.find_elements(By.CSS_SELECTOR, 'li')  #获取页面pro-list-con下的多个ul下的li
        for li in lis:
            try:
                title = li.find_element(By.CSS_SELECTOR, 'h3').text     #.replace('\n', '')把换行变成空格  #获取li下的商品名称
                price = li.find_element(By.CSS_SELECTOR, '.price').text  #获取商品价格
                dit = {
                    '商品标题': title,
                    '商品价格': price,
                }
                csv_writer.writerow(dit)
                logging.info(f'Successfully saved product info: {title} | {price}')    #把商品名称,价格写进csv文件
            except Exception as e:
                logging.error(f'Failed to get product info: {e}')
def main():
    csv_fields = ['商品标题', '商品价格']  #定义csv文件列名
    with open(CSV_FILE, mode='a', encoding='utf-8', newline='') as f:     #打开斌创建csv文件
        csv_writer = csv.DictWriter(f, fieldnames=csv_fields)
        csv_writer.writeheader()    #写入列名
        driver = webdriver.Chrome()   #此次路径为chrome.exe路径
        # # 设置代理IP地址和端口
        # proxy_ip = "http://proxy.example.com:8080"
        #
        # # 创建一个requests session对象,并设置代理
        # session = requests.Session()
        # session.proxies = {'http': proxy_ip, 'https': proxy_ip}
        # # 发送HTTP请求获取网页内容
        # response = session.get("https://example.com")
        driver.get('https://www.edianyun.com/index')   # 访问一个网址 打开浏览器 打开网址
        driver.find_element(By.CLASS_NAME, 'hsearch-text').send_keys(KEY_WORD)  # 找到输入框标签
        driver.find_element(By.CLASS_NAME, 'hsearch-but').click()    # 找到搜索按钮 进行点击
        time.sleep(3)
        for page in range(1, PAGE_COUNT + 1):
            logging.info(f'Start crawling page {page}')   #正在爬取第几页数据
            drop_down(driver)
            get_shop_info(driver, csv_writer)
            try:
                next_btn = driver.find_element(By.CLASS_NAME, 'icon-page-right')   #点击下一页按钮
                next_btn.click()
            except Exception as e:
                logging.error(f'Failed to click next button: {e}')
                break
            else:
                time.sleep(3)
        driver.quit()
        logging.info(f'Successfully saved all product info to {CSV_FILE}')
if __name__ == '__main__':
    main()
运行结果是这样的

同时会在目录下生成一个csv文件,存数据

第一次写,不太懂,见笑了

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值