首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >day135-scrapy中selenium的使用&链接提取器

day135-scrapy中selenium的使用&链接提取器

原创
作者头像
少年包青菜
修改于 2020-05-11 02:43:45
修改于 2020-05-11 02:43:45
2K00
代码可运行
举报
文章被收录于专栏:Python 学习Python 学习
运行总次数:0
代码可运行

1.在middlewares.py和pipelines.py文件中的 spider 参数是什么?

就是爬虫文件的类,可以通过 spider.xxx 调用属性或者方法

2.scrapy中使用selenium

中间件 process_response() 中 selenium 加载动态数据替换非动态加载数据

2.1 selenium 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载器返回结果是替换响应结果
def process_response(self, request, response, spider):
    url = response.url
    print(url)
    # 对 url 进行判断
    if url in spider.joke_url_list:
        driver = webdriver.Firefox()
        driver.get(url)
        driver.implicitly_wait(10)
        while 1:
            if not is_element_exists(driver, '//h1[@class="article-title"]'):
                sleep(1)
                continue
            # 获取页面源码数据    
            web_page = driver.page_source
            sleep(1.5)
            driver.quit()
            return HtmlResponse(    # from scrapy.http import HtmlResponse
                url=url,            # 返回 url
                body=web_page,      # 替换响应数据
                encoding='utf-8',   # 设置编码 
                request=request     # 返回 request
            )
    return response

3.全站连接提取器

3.1新建一个项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy startproject xxxPro

3.2新建一个爬虫文件

scrapy genspider -t crawl getUrl www.xxx.com

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy genspider -t crawl getUrl www.xxx.com

3.3代码以及说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class GeturlSpider(CrawlSpider):
    name = 'getUrl'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['http://www.qiushibaike.com/']

    """
    # 正则匹配
    # 直接匹配连接文本内容
    """
    link_1 = LinkExtractor(allow=r'/8hr/page/\d+')
    """    
    # xpath 路径匹配
    # 注意不需要 ./@href !!
    """
    link_2 = LinkExtractor(restrict_xpaths='//ul[@class="pagination"]/li/a')

    """
    # 可以添加多个匹配规则
    # callback : 指定回调函数
    # follow : False --> 只解析当前起始页符合规则的链接
    # follow : True --> 在当前页提取出的连接中递归解析出缝合规则的链接
    # 相同连接将会自动去重
    """
    rules = (
        Rule(link_1, callback='parse_item', follow=True),
        Rule(link_2, callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        print(response)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
scrapy框架
scrapy genspider 应用名称 爬取网页的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)
全栈程序员站长
2022/09/07
1.7K0
scrapy框架
爬虫之scrapy框架
  何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞的代码实现并发的,结构如下:
py3study
2020/01/17
1.3K0
scrapy全站爬取
需求:爬取站长素材的高清图片的爬取https://sc.chinaz.com/tupian/
用户8447427
2022/08/18
8580
scrapy全站爬取
python爬虫–scrapy(再探)
— 图片:xpath解析出图片src的属性值。单独的对图片地址发起请求获取图片二进制类型的数据。
全栈程序员站长
2021/04/21
6870
python爬虫–scrapy(再探)
Python Scrapy框架之CrawlSpider爬虫
一般写爬虫是自己在解析完整个页面后获取下一页的url,然后重新发送一个请求。有时候我们想要这样做,只要满足某个条件的url,都给我进行爬取。那么这时候我们就可以通过CrawlSpider来帮我们完成了。CrawlSpider继承自Spider,只不过是在之前的基础之上增加了新的功能,可以定义爬取的url的规则,以后scrapy碰到满足条件的url都进行爬取,而不用手动的yield Request。
Python知识大全
2020/02/13
6030
Python Scrapy框架之CrawlSpider爬虫
Scrapy Crawlspider的详解与项目实战
回顾上一篇文章,我们大多时间都是在寻找下一页的url地址或者是内容的url地址上面,我们的大体思路是这样的:
咸鱼学Python
2019/10/09
2.1K0
Python爬虫之scrapy框架学习
scrapy安装步骤 pip install wheel 下载twisted : 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted (选择对应的版本) 安装twisted : pip install aiohttp-3.8.1-cp38-cp38-win_amd64.whl pip install pywin32 pip install scrapy 测试终端输入: scrapy 创建工程 终端输入: scrapy startproject fi
shaoshaossm
2022/12/26
7400
Scrapy入门案例——腾讯招聘(CrawlSpider升级)
需求和上次一样,只是职位信息和详情内容分开保存到不同的文件,并且获取下一页和详情页的链接方式有改动。
100000860378
2018/09/13
8190
Scrapy入门案例——腾讯招聘(CrawlSpider升级)
Scrapy框架的使用之Scrapy通用爬虫
通过Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码。 如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可。 本节我们就来探究一下Scrapy通用爬虫的实现方法。 一、CrawlSpider 在实现通用爬虫之前,我们需要先了解一下CrawlSpider
崔庆才
2018/06/25
2.7K0
Scrapy爬虫框架Spiders爬虫脚本使用技巧
我们都知道Scrapy是一个用于爬取网站数据、提取结构化数据的Python框架。在Scrapy中,Spiders是用户自定义的类,用于定义如何爬取某个(或某些)网站,包括如何执行爬取(即跟踪链接)以及如何从页面中提取结构化数据(即爬取项)。至于如何定义Spiders爬虫逻辑和规则可以看看我下面总结的经验。
华科云商小徐
2025/06/03
1640
普通爬虫有啥意思,我写了个通用Scrapy爬虫
除了钱,大家还比较喜欢什么?当然是全能、万能和通用的人或事物啦,例如:全能、什么都会的员工、万能钥匙、通用爬虫等等。今天我们学习Scrapy通用爬虫,利用Scrapy通用爬虫来获取美食杰网站[1]。
Python进击者
2022/01/11
1.2K0
普通爬虫有啥意思,我写了个通用Scrapy爬虫
Scrapy框架-CrawlSpider
它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合
py3study
2020/01/17
6540
python爬虫入门(八)Scrapy框架之CrawlSpider类
CrawlSpider类 通过下面的命令可以快速创建 CrawlSpider模板 的代码: scrapy genspider -t crawl tencent tencent.com CrawSpider是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。 CrawSpider源码详细解析 class CrawlSpider(Spider)
zhang_derek
2018/04/11
2.3K0
python爬虫入门(八)Scrapy框架之CrawlSpider类
爬虫系列(13)Scrapy 框架-CrawlSpider、图片管道以及下载中间件Middleware。
首先在说下Spider,它是所有爬虫的基类,而CrawSpiders就是Spider的派生类。对于设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合。
野原测试开发
2019/07/10
1.4K0
三、scrapy后续 LinkExtractorsrules Logging发送POST请求内置设置参考手册
CrawlSpiders 通过下面的命令可以快速创建 CrawlSpider模板 的代码: scrapy genspider -t crawl tencent tencent.com 我们通过正则表达式,制作了新的url作为Request请求参数,现在我们可以用这个... class scrapy.spiders.CrawlSpider 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制
酱紫安
2018/04/16
2.1K0
CrawlSpider(规则爬虫)和Spider版爬虫
1.规则爬虫--scrapy genspider -t crawl Question wz.sun0769.com
用户2337871
2019/07/19
6530
Scrapy框架中crawlSpider的使用——爬取内容写进MySQL和拉勾网案例
Scrapy框架中分两类爬虫,Spider类和CrawlSpider类。该案例采用的是CrawlSpider类实现爬虫进行全站抓取。
菲宇
2019/06/13
1.3K0
Python爬虫之分布式爬虫
搭建分布式机群,让其对一组资源进行分布式联合爬取 提升爬取效率 实现分布式: pip install scrapy-redis scrapy-redis 组件的作用: 给原生的scrapy框架提供可以被共享的管道和调度器 ---- 分布式爬虫 实现步骤: scrapy startproject firstdemo scrapy genspider -t crawl xxx [www.xxx.com](http://www.xxx.com/) 修改当前爬虫文件 导包 : from scrapy_r
shaoshaossm
2022/12/26
5041
爬虫课堂(二十八)|Spider和CrawlSpider的源码分析
我在爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取章节中说将对CrawlSpider的源码进行一个讲解,这篇文章就是来还账的,你们如果觉得好请点个赞。 一、Spider源码分析 在对CrawlSpider进行源码分析之前,先对Spider源码进行一个分析。 1.1、Spider介绍及主要函数讲解 Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(是否跟进链接)以及如何从网页的内容中提取结构化数据(提取Item)。 Spider就是定义爬取的
黄小怪
2018/05/21
1.9K0
Python:CrawlSpiders
上一个案例中,我们通过正则表达式,制作了新的url作为Request请求参数,现在我们可以换个花样...
Lansonli
2021/10/09
3750
相关推荐
scrapy框架
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档