当前位置: 首页 > news >正文

爬虫练习案例

案例1:

爬取菜鸟教程左侧导航栏的分类内容:
在这里插入图片描述

在pycharm中书写代码。
先倒入相关模块。

import requests
from bs4 import BeautifulSoup
import lxml.etree as le

这个案例写两种写法。
第一种:

url='https://www.runoob.com/html/html-tutorial.html'
response=requests.get(url)

# 第一种方法:
bs = BeautifulSoup(response.content, 'html.parser')

index=0
for a in bs.find(id='leftcolumn').find_all('a'):
    index+=1
    print(index,a.text.strip())

第二种:

#第二种方法:
contentx=le.HTML(response.content)
rets=contentx.xpath('//div[@id="leftcolumn"]/a/text()')
index=0
for category in rets:
    index += 1
    print(index,category.strip())

打印结果都是76条:
在这里插入图片描述

案例2:

爬取前程无忧工作职能里面的所有分类。
在这里插入图片描述

from selenium import webdriver
from selenium.webdriver.common.by import By

driver=webdriver.Chrome();#打开谷歌浏览器
url='https://we.51job.com/pc/search?keyword=&searchType=2&sortType=0&metro='
driver.get(url)
xpath1='//div[@class="e_e e_com"]/p' #定位到 "工作职能"按钮
element1=driver.find_element(By.XPATH,xpath1)
element1.click()
data=[]

element2=driver.find_elements(By.XPATH,'//ul[@class="cascader_panel_menu"][1]/li')

for span1 in element2:
    driver.execute_script("arguments[0].scrollIntoView();", span1)#作用是将指定的元素滚动到浏览器视口中,使其可见
    category1=span1.text
    span1.click()
    
    element3 = driver.find_elements(By.XPATH,'//ul[@class="cascader_panel_menu"][2]/li')

    for span2 in element3:
        driver.execute_script("arguments[0].scrollIntoView();", span2)
        category2=span2.text
        span2.click()

        
        element4 = driver.find_elements(By.XPATH,'//ul[@class="cascader_panel_menu"][3]/li')
        category3=[]
        for span3 in element4:
            driver.execute_script("arguments[0].scrollIntoView();", span3)
            category3.append(span3.text)
        data.append({
            'level1':category1,
            'level2':category2,
            'level3':category3,
        })
print(data)


输出:
在这里插入图片描述

http://www.dtcms.com/a/113752.html

相关文章:

  • zk基础—5.Curator的使用与剖析二
  • 打造高效英文单词记忆系统:基于Python的实现与分析
  • $R^n$超平面约束下的向量列
  • 游戏引擎学习第206天
  • React框架的Hooks实现原理
  • MicroPython 开发ESP32应用教程 之 WIFI简单应用 :时间同步、天气信息获取,ST7735 TFT屏驱动及任意中文字符显示
  • Linux制作deb安装包
  • 卡尔曼滤波器浅聊
  • windows 常用命令总结
  • MySQL表的增删改查基础版
  • 【大模型深度学习】如何估算大模型需要的显存
  • JavaScript基础--09-流程控制语句:选择结构(if和switch)
  • 文件系统-inode/软硬件连接(未完结)
  • 用 Python 制作仓库自动化指南
  • Kotlin协程机制
  • 解析keras.layers.Layer中的权重参数
  • Linux内核——段描述符详解
  • SeaTunnel系列之:Apache SeaTunnel编译和安装
  • 《SQL赋能人工智能:解锁特征工程的隐秘力量》
  • python基础-11-调试程序
  • DrissionPage高级技巧:从爬虫到自动化测试
  • Python FastApi(13):APIRouter
  • 操作系统知识点(二)
  • 超级科学软件实验室(中国) : Super Scientific Software Laboratory (SSSLab)
  • Vue2与Vue3不同
  • Deformable DETR(复习专用)
  • 基于Spark的哔哩哔哩舆情数据分析系统
  • 【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-创建网格
  • liunx输入法
  • 网安小白筑基篇五:web后端基础之Python(补充Python的魔术方法)