xpath的使用,selenium爬取京东商品信息,scrapy介绍,安装及使用

2023-05-16

这里写目录标题

  • 一.xpath的使用
  • 二.selenium爬取京东商品信息
  • 三.scrapy的架构
    • 3.1scrapy的架构
    • 3.2目录介绍
  • 四.scrapy的简单使用

一.xpath的使用

1 css  xpath  通用的
2 XPath 使用路径表达式在 XML 文档中选取节点
3 lxml模块为例,讲xpath选择(selenium,scrapy---》css/xpath)
4 用法:

# / :从当前节点开始选择,子节点
# // :从当前节点开始选择,子子节点
# @选取属性a[@href="image1.html"],选择a标签,href属性为image1.html
# .. 表示父节点
# /a[3] 选当前节点下第一个a标签
# /text() 取这个标签的文本
# /@href  获取href属性
# /a[contains(@class,"li")] 类名中有li的a标签
# /a[@class='li'] 类名等于li的a标签

二.selenium爬取京东商品信息


from selenium import webdriver
from selenium.webdriver.common.keys import Keys


# 定义爬取函数

def get_goods(bro):
    # 滑倒屏幕底部
    bro.execute_script('scroll(0,document.body.scrollHeight)')
    li_list = bro.find_elements_by_class_name('gl-item')
    for li in li_list:
        try:
            img_url = li.find_element_by_css_selector('.p-img>a>img').get_attribute('src')
            if not img_url:
                img_url = li.find_element_by_css_selector('.p-img>a>img').get_attribute('data-lazy-img')
            img_url = 'https:' + img_url

            name = li.find_element_by_css_selector('.p-name em').text
            url = li.find_element_by_css_selector('.p-img>a').get_attribute('href')
            price = li.find_element_by_css_selector('.p-price i').text
            commit = li.find_element_by_css_selector('.p-commit a').text
            print('''
            商品名称:%s
            商品价格:%s
            商品链接:%s
            图片链接:%s
            商品评论数:%s
    
            ''' % (name, price, url, img_url, commit))
        except Exception as e:
            continue

    # 点击下一页

    next = bro.find_element_by_partial_link_text('下一页')
    next.click()
    # 再解析下一页的内容
    get_goods(bro)




bro = webdriver.Chrome(executable_path='chromedriver.exe')


try:
    bro.get('https://www.jd.com/')
    # 隐士等待

    bro.implicitly_wait(10)
    search_in = bro.find_element_by_id('key')
    search_in.send_keys('男士内衣')

    search_in.send_keys(Keys.ENTER)  # 敲击回车

    # bro.page_source--->bs4--lxml
    get_goods(bro)
except Exception as e:
    print(e)

finally:
    bro.close()




三.scrapy的架构

0 框架---》别人帮我们写了好多代码,我们只需要再固定的位置写固定的代码
1 爬虫界的django---》好多东西用起来跟django很像
2 pip3 install scrapy  (依赖)
	-win平台:
        1、pip3 install wheel 
        3、pip3 install lxml
        4、pip3 install pyopenssl(装这个装不上:更新pip,搜方案)
        5、下载并安装pywin32:https://github.com/mhammond/pywin32/releases
        6、下载twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
        7、执行pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
        8、pip3 install scrapy

3 win平台有些模块不好装
	-pip3 install wheel 
    -http://www.lfd.uci.edu/~gohlke/pythonlibs 下载相应的wheel文件
    -pip3 install 把下载后的whl拖入即可(注意python,win版本)

    
4 只要装完:scrapy 命令
	-django创建项目:djangoadmin startproject 项目名(pycharm也可以直接创建)
    -scrapy创建项目:scrapy startproject 项目名
    -使用pycharm打开
    -django中创建app :python manage.py startapp app名字
    -scrapy创建爬虫: scrapy genspider 爬虫名 爬虫的地址
    
    
5 scrapy总结
	-pip3 install scrapy
    -scrapy startproject 项目名
    -scrapy genspider 爬虫名 爬虫的地址

3.1scrapy的架构


# 5大组件:
1 爬虫:SPIDERS
	-刚刚创建的一个个爬虫(py文件,以后主要再这写)
2 引擎EGINE
	-大总管,负责各个组件的沟通(写代码不涉及到),
    -引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件
3 pipline持久化
	-爬完数据解析完,入库(py文件,存数据库,存文件,存redis,在这写)
    -在items被提取后负责处理它们,主要包括清理、验证、持久化(比如存到数据库)等操作
4 调度器
	-调度谁先被爬取,谁后爬取(通过配置来操作)
    -用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
5 下载器
	-真正取爬取数据的(写代码也不涉及)

# 两大中间件
1 爬虫中间件,介于爬虫和引擎之间,可以写多个(一般不写)
2 下载中间件,介于下载器和引擎之间,可以写多个(写的多)
    
    

3.2目录介绍

myfirstscrapy # 项目名字
    myfirstscrapy # 文件夹
        spiders   # 所有的爬虫文件都放在这个下面
            __init__.py
            chouti.py  # 爬虫1  (写代码)
            baidu.py   # 爬虫2
            cnblogs.py # 爬虫3
        settings.py # 整个项目的配置文件
        items.py    # 写一些类,对比django的models    (写一些类)
        middlewares.py # 爬虫中间件和下载中间件都写在这  (写中间件)
        pipelines.py  # 持久化,存数据,文件,都在这写(数据清洗入库)  (写代码)
    scrapy.cfg        # 上线的配置文件 
    

四.scrapy的简单使用

1 运行爬虫
	scrapy scrawl 爬虫名           打印运行日志
    scrapy crawl cnblogs --nolog   不打印日志

    
2 记住的
	-解析(def parse(self, response)-css
        -xpath
    -解析
    '''
             xpath  
             选择文本  /text()
             选择属性  /@href

             css
             选择文本  ::text
             选择属性  ::attr(href)

             # extract_first取一个
             # extract()  取所有(列表形式)

            '''
   -在解析的函数中yeild Request对象,这个地址又会去发请求
		-yield Request(url=url,callback=self.parser_detail)
   		-不写默认用yield Request(url=url,callback=self.parser)
	
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xpath的使用,selenium爬取京东商品信息,scrapy介绍,安装及使用 的相关文章

随机推荐

  • luffy-02

    这里写目录标题 一 昨日回顾二 今日内容1 路飞前台配置 1 重构项目目录 2 文件修订 xff1a 目录中非配置文件的多余文件可以移除router的使用 3 前台配置 全局样式 配置文件 axios vue cookies element
  • luffy-03

    这里写目录标题 一 昨日回顾二 今日内容1 跨域问题1 1后端自己处理跨域简单请求非简单请求中间件处理 1 2前端处理跨域App vuevue config js 2 头部组件 尾部组件components Header vuecompon
  • luffy-04

    这里写目录标题 一 昨日回顾二 今日内容1 路飞项目使用xadmin2 首页轮播图接口 轮播图表 视图类 轮播图数量4 通过配置实现 前端对接 后续 接口缓存 3 git的使用3 1git的工作流程 4 git分支git提交代码出现冲突的2
  • luffy-05

    这里写目录标题 一 首页轮播图接口二 今日内容1 过滤文件2 从远端拉项目3 远程仓库3 1链接远程仓库的两种情况 4 冲突出现的原因及解决 一 首页轮播图接口 span class token number 1 span 首页轮播图接口
  • 手把手教你搭建鸿蒙hi3518开发和运行环境

    前言 学习 C 语言 xff0c C 43 43 语言 xff0c 数据结构和算法 xff0c 操作系统 xff0c 网络 xff0c 驱动 xff0c 设计模式等知识 用鸿蒙来强化就太对了 本文教你一步一步搭建鸿蒙的开发和运行环境 xff
  • luffy-06

    这里写目录标题 一 上节回顾二 今日内容1 ssh链接和https链接2 gitlab3 git远程分支合并4 git冲突出现原因及解决5 首页登录注册vue页面Header vueLogin vue 6 登录注册功能接口分析 一 上节回顾
  • luffy-07

    这里写目录标题 一 昨日回顾二 今日内容1 登录注册前端页面1 1Login vue1 2Register vue1 3Header vue 2 多方式登录接口3 手机号是否存在接口3 1路由层user urls py3 2user ser
  • luffy-08

    这里写目录标题 一 集成了腾讯短信 封装 luffyapi lib t sms settings pyluffyapi lib t sms sms py 二 短信验证码接口2 1路由 配置2 2视图 三 短信登录接口3 1视图3 2序列化类
  • luffy-09/redis

    这里写目录标题 一 昨日回顾二 今日内容1 redis介绍2 redis的Windows安装和配置3 普通链接和连接池3 1代码3 2redis pool py 4 redis之string操作5 redis之hash操作 一 昨日回顾 s
  • luffy-10/redis/celery简单介绍

    这里写目录标题 一 昨日回顾二 今日内容2 1redis之列表操作2 2 redis之其他操作2 3 redis之管道2 4 django中使用redis2 4 1通用方案redis pool pyviews py 2 4 2django提
  • luffy-11/celery

    这里写目录标题 一 昨日回顾二 今日内容1 celery基本使用2 celery多任务结构多任务结构小案例 3 高级使用之延时任务4 高级使用之定时任务5 django中使用celery6 首页轮播图定时更新6 1首页轮播图走redis缓存
  • luffy-12/课程页面前端,课程表数据录入,课程表分析,编写

    这里写目录标题 一 昨日回顾二 今日内容2 1课程页面前端2 2课程表分析 编写修改之前的一些数据 2 3课程表数据录入2 4课程分类接口 一 昨日回顾 span class token number 1 span celery span
  • luffy-13/课程接口,课程详情前台

    这里写目录标题 一 课程接口1 1 course serializer py1 2 course models py1 3course pagenation py1 4course SearchByName py1 5course view
  • luffy-14/课程详情,课程章节接口,课程详情前台,七牛云对象存储托管视频

    这里写目录标题 一 课程详情接口 课程章节接口1 1课程详情接口1 2课程章节接口1 3序列化类1 4路由 二 课程详情前台三 七牛云对象存储托管视频四 区间过滤 一 课程详情接口 课程章节接口 span class token numbe
  • luffy-15/区间过滤,搜索功能前端后端,支付宝

    这里写目录标题 一 区间过滤二 搜索功能2 1后端代码2 2前端搜索页面2 2 1views SearchCourse vue2 2 2router index js2 2 3components Header vue 三 支付宝3 0结构
  • QT工程:error: undefined reference to `QSerialPort::QSerialPort(

    问题 xff1a qt中使用QSerialPort时报错 error undefined reference to 96 QSerialPort QSerialPort 解决办法 xff1a 工程文件 pro里增加 xff1a QT 43
  • luffy-16/订单表设计,立即付款接口/前端,支付成功get回调用户展示,支付成功post回调修改订单状态

    这里写目录标题 一 昨日回顾二 今日内容1 订单表设计2 立即付款接口 一堆校验 登录后 2 1视图类2 2序列化类2 3自定义异常类2 4配置文件2 5路由 3 立即付款前端4 支付成功get回调用户展示4 1luffycity src
  • luffy-17/上线

    这里写目录标题 一 上节回顾二 今日内容1 购买阿里云服务器2 服务器配置 软件安装2 1更新系统软件包2 2安装mysql2 3安装redis2 4安装python3 62 5配置pip源 xff1a 阿里云不用配置 xff0c 默认配置
  • bs4遍历文档树,搜素文档树,find_all参数,selenium,模拟登陆百度

    这里写目录标题 一 昨日回顾二 今日内容1 bs4遍历文档树2 bs4的搜索文档树3 find all的其他参数4 css选择器5 selenium的介绍6 selenium的使用7 模拟登陆百度8 selenium的其他使用 一 昨日回顾
  • xpath的使用,selenium爬取京东商品信息,scrapy介绍,安装及使用

    这里写目录标题 一 xpath的使用二 selenium爬取京东商品信息三 scrapy的架构3 1scrapy的架构3 2目录介绍 四 scrapy的简单使用 一 xpath的使用 span class token number 1 sp