BeautifulSoup+xpath+re+css简单复习+新的scrapy的学习

news2024/10/6 4:09:15
    1.BeautifulSoup

soup = BeautifulSoup(html,'html.parser')

all_ico=soup.find(class_="DivTable")

        2.xpath

trs = resp.xpath("//tbody[@id='cpdata']/tr")
hong = tr.xpath("./td[@class='chartball01' or @class='chartball20']/text()").extract()

这个意思是找到  tbody[@id='cpdata']  这个东西 ,然后在里面找到[@class='chartball01]这个东西,然后extract()提取信息内容

3.re

img_name = re.findall('alt="(.*?)"',response)

这个意思是找到(.*?)这个里面的东西,在response,这个response是text

4.css

element3 = element2.find_element(By.CSS_SELECTOR,'a[target="_blank"]').click()

css找到标签atarget="_blank"这个东西,然后点击

如果是标签啥都不加,class@ID#



下面是今天学习scrapy的成果:

先是复习创建一个scrapy(都是在命令里面)

1.scrapy startproject  +名字(软件包的名字)

2.cd+名字-打开它

3.scrapy genspider +名字(爬虫的名字)+区域地址

4.scrapy crawl +名字(爬虫的名字)

在setting里面修改

今天不在命令里面跑了

在名字(软件包的名字)下建立一个 python文件

 然后运行就OK

下面还有在管道里面的存储方法(存储为csv形式)

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class Caipiao2Pipeline:
    def open_spider(self,spider):#开启文件
        #打开
        self.f = open("data2.csv",mode='a',encoding="utf-8")    #self====>在这个class中定义一个对象

    def close_spider(self,spider):#关闭文件
        self.f.close()

    def process_item(self, item, spider):
        print("====>",item)

        self.f.write(f"{item['qi']}")
        self.f.write(',')
        self.f.write(f"{item['hong']}")
        self.f.write(',')
        self.f.write(f"{item['lan']}")
        self.f.write("\n")
        # with open("data.csv",mode='a',encoding="utf-8") as f:
        #     f.write(f"{item['qi']}")
        #     f.write(',')
        #     f.write(f"{item['hong']}")
        #     f.write(',')
        #     f.write(f"{item['lan']}")
        #     f.write("\n")
        return item

第一种是传统的 with open 

第二种是,开始运行,之后在管道里会运行一个方法, open_spider  在这里面打开文件

下面所有代码和成果

 这个是爬虫函数

import scrapy


class ShuangseqiuSpider(scrapy.Spider):
    name = "shuangseqiu"
    allowed_domains = ["sina.com.cn"]
    start_urls = ["https://view.lottery.sina.com.cn/lotto/pc_zst/index?lottoType=ssq&actionType=chzs&type=50&dpc=1"]

    def parse(self, resp,**kwargs):
        #提取
        trs = resp.xpath("//tbody[@id='cpdata']/tr")
        for tr in trs:  #每一行
            qi = tr.xpath("./td[1]/text()").extract_first()
            hong = tr.xpath("./td[@class='chartball01' or @class='chartball20']/text()").extract()
            lan = tr.xpath("./td[@class='chartball02']/text()").extract()
            #存储
            yield {
                "qi":qi,
                "hong":hong,
                "lan":lan
            }

这个是管道函数

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class Caipiao2Pipeline:
    def open_spider(self,spider):#开启文件
        #打开
        self.f = open("data2.csv",mode='a',encoding="utf-8")    #self====>在这个class中定义一个对象

    def close_spider(self,spider):#关闭文件
        self.f.close()

    def process_item(self, item, spider):
        print("====>",item)

        self.f.write(f"{item['qi']}")
        self.f.write(',')
        self.f.write(f"{item['hong']}")
        self.f.write(',')
        self.f.write(f"{item['lan']}")
        self.f.write("\n")
        # with open("data.csv",mode='a',encoding="utf-8") as f:
        #     f.write(f"{item['qi']}")
        #     f.write(',')
        #     f.write(f"{item['hong']}")
        #     f.write(',')
        #     f.write(f"{item['lan']}")
        #     f.write("\n")
        return item

这个是启动函数:

from  scrapy.cmdline import execute

if __name__ =="__main__":
    execute("scrapy crawl shuangseqiu".split())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1476876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【竞技宝】DOTA2-梦幻联赛S22:AR命悬一线 XG确定晋级淘汰赛

北京时间2024年2月28日,DOTA2梦幻联赛S22的比赛在昨日进入小组赛第三个比赛日,本次梦幻联赛共有AR、XG、IG三支中国区的队伍参赛,那么经过三日激烈的比赛之后,目前三支队伍的积分情况以及晋级形势如何呢? XG XG是小组…

手机使用Python轻松下载闲鱼短视频

目录 一、Python与手机端的结合 二、闲鱼短视频下载原理 三、使用Python实现下载 安装必要的库 捕获视频流 保存视频文件 四、案例分析 五、注意事项 六、总结 在数字化时代,短视频已成为人们获取信息、娱乐休闲的重要方式之一。闲鱼,作为国内知…

(PWM呼吸灯)合泰开发板HT66F2390-----点灯大师

前言 上一篇文章相信大家已经成为了点灯高手了,那么进阶就是成为点灯大师 实现PWM呼吸灯 接下来就是直接的代码讲解了,不再讲PWM原理的 这里部分内容参考了另一个博主的文章 合泰杯——合泰单片机工程7之PWM输出 如果有小伙伴不理解引脚设置和delay函数…

docker (十二)-私有仓库

docker registry 我们可以使用docker push将自己的image推送到docker hub中进行共享,但是在实际工作中,很多公司的代码不能上传到公开的仓库中,因此我们可以创建自己的镜像仓库。 docker 官网提供了一个docker registry的私有仓库项目&#…

【Micropython教程】点亮第一个LED与流水灯

文章目录 前言MicroPython在线仿真GPIO的工作模式一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 一、machine.Pin类1.1 machine.Pin 类的构造对象1.2 machine.Pin 类的方法init方法value方法设置高低电平方法 二、延时函数 三、流水灯总…

6U VPX全国产飞腾D2000/8核+复旦微FPGA信息处理主板

产品特性 产品功能 飞腾计算平台,国产化率100% VPX-MPU6503是一款基于飞腾D2000/8核信息处理主板,采用由飞腾D2000处理器飞腾X100桥片的高性能计算机模块,双通道16G贴装内存,板载128G 固态SSD;预留固态盘扩展接口&…

通过XML调用CAPL脚本进行测试(新手向)

目录 0 引言 1 XML简介 2 通过XML调用CAPL脚本 0 引言 纪念一下今天这个特殊日子,四年出现一次的29号。 在CANoe中做自动化测试常用的编程方法有CAPL和XML两种,二者各有各的特色,对于CAPL来说新手肯定是更熟悉一些,因为说到在C…

循环结构:for循环,while循环,do-while,死循环

文章目录 for循环for案例:累加for循环在开发中的常见应用场景 whilewhile循环案例: for和while的区别:do-while三种循环的区别小结死循环 快捷键 ctrlaltt for循环 看循环执行多少次,就看有效数字有几个 快捷键 fori 示例代码&am…

测评ONLYOFFICE 8.0版本:办公利器再升级

测评ONLYOFFICE 8.0版本:办公利器再升级 前言注册使用升级功能速览全新外观设计wordexcelPPTPDF 协作功能强化更强大的功能复杂表单的填写 移动端优化结语 前言 随着科技的不断发展,办公软件在提升用户体验和工作效率方面扮演着越来越重要的角色。作为一…

Apache的安装与配置(使用)

目录 前言 一,安装 1. centos上安装Apache 1.1 基本使用 启动 停止 检查 测试运行 设置开机启动 2. 部署web 下载 解压 安装mysql数据库 安装php7.3 3.安装wordpress httpd命令语法解释 httpd几个常用目录 httpd常用的协议状态码解释 前言 apache…

基于stm32F103的座面声控台灯

1.基本内容: 设计一个放置在桌面使用的台灯,使用220v交流电供电。具备显示屏能够实时显示日期(年、月、日和星期),时间(小时、分钟、秒)和温度(摄氏度);能够通…

3D数字孪生

数字孪生(Digital Twin)是物理对象、流程或系统的虚拟复制品,用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要,因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…

vmware安装centos 7.9 操作系统

vmware安装centos 7.6 操作系统 1、下载centos 7.9 操作系统镜像文件2、安装centos 7.9 操作系统3、配置centos 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载centos 7.9 操作系统镜像文件 本文选择centos 7.9 最小化安装镜像包 这里选…

云尚办公-0.0.3

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController:1.该类是控制器;2.方法返回值会被写进响应报文的报文体,而…

express+mysql+vue,从零搭建一个商城管理系统3--user路由模块

提示:学习express,搭建管理系统 文章目录 前言一、新建routes文件夹二、新建routes/index.js和routes/user.js三、修改index.js四、修改routes/index.js五、修改routes/user.js六、启动项目预览总结 前言 需求:主要学习express,所…

Adobe Acrobat DC中如何合并pdf并生成目录

一、利用 Acrobat 合成pdf目录 (一)新建标签(更改标签等级等) 1,用Adobe acrobat 软件打开待添加书签的pdf文档。 2,打开之后点击软件左边栏的书签(有时被隐藏了,点击一下界面左边…

电脑周末设置节日提醒倒计时方法教程

每当节日临近,无论是传统的元宵节、端午节,还是其他各种特殊的日子,我总期待着能与家人团聚,或是为自己准备一份小惊喜,享受那份独特的仪式感。 但生活的忙碌和琐碎的事情常常让我忘记这些重要的日子。有时&#xff0…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆,这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator(观察者)&#xf…

文件拖放到窗体事件

网上的实现1 实现结果 具体实现代码:注意需要使能允许拖拽 public partial class Form1 : Form {public Form1(){InitializeComponent();this.AllowDrop true; //允许拖拽}private void Form1_DragEnter(object sender, DragEventArgs e){this.Text DateTime.No…

结合CMD文件,将变量写到ROM和Falsh中

结合CMD文件,将变量写到ROM和Falsh中 RAM是一种易失性存储器,它用于临时存储计算机程序和数据。当计算机关闭或断电时,RAM中的数据将丢失。RAM具有很快的读写速度,但容量有限。 Flash是一种非易失性存储器,它可以长期存储数据而不会丢失。Flash存储器通常用于存储操作系统…