快速构建Scrapy项目脚手架

  • 第一步:下载并安装python3.9
  • 第二步:下载并安装Anaconda
  • 第三步:安装scrapy(安装也可通过:pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
conda install -c conda-forge scrapy
scrapy startproject 项目名称
  • 第五步:创建一个爬虫::在项目根路径下:(建议去掉限制域,他过滤掉很多url…会出现parse不生效的假象)
scrapy genspider 爬虫名称 要爬取的限制域
  • 第六步:启动爬虫:
scrapy crawl 爬虫名称

快速构建Scrapy项目脚手架
* 第七步:调试爬虫:在根路径下新建文件main.py,内容如下:修改一下爬虫名称即可
from scrapy.cmdline import execute
import os
import sys

if __name__ == '__main__':
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    execute(['scrapy', 'crawl', '爬虫名称'])
  • 第八步:IP代理中间件:打开middlewares.py文件添加一个中间件
配置IP代理
class ProxyMiddleware(object):
    def process_request(self, request, spider):
        request.meta['proxy'] = get_proxy_ip_free() #这是我封装好的一个工具,该方法能获取代理IP和端口
import urllib.request
import json
import requests

阿里云IP代理
def get_proxy_ip():
    host = 'http://zip.market.alicloudapi.com'
    path = '/devtoolservice/ipagency'
    method = 'GET'
    appcode = 'sdfasdfsdfsdfsdfsdffd'
    querys = 'foreigntype=0&protocol=0'
    bodys = {}
    url = host + path + '?' + querys

    request = urllib.request.Request(url)
    request.add_header('Authorization', 'APPCODE ' + "dfgcccccfgdfg2dfgg")
    response = urllib.request.urlopen(request)
    content = response.read()
    if (content):
        load = json.loads(str(content, encoding='utf8'))
        address_ = load['result'][0]['address']
        return address_

自己搭建的代理服务器
def get_proxy_ip_free():
    json_result = requests.get("http://xxx.xxx.xxx.xxx:8080/get/").json()
    return 'http://' + json_result['proxy']

打开settings.py文件开启中间件即可生效.

  • 第九步:UserAgent中间件:采用了fake_useragent库
pip install fake-useragent
pip install -U fake-useragent

快速构建Scrapy项目脚手架

打开middlewares.py文件,配置代理如下

from fake_useragent import UserAgent

location = r"D:\biantu\biantuscrapy\biantuscrapy\spiders\fake_useragent_0.1.11.json" #配置成刚刚copy的地址

配置headers
class RandomUserAgentMidddlware(object):
    # 随机更换user-agent
    def __init__(self, crawler):
        super(RandomUserAgentMidddlware, self).__init__()

        self.ua = UserAgent(path=location)
        # 从配置文件读取随机类型
        self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random')

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler)

    def process_request(self, request, spider):
        # 通过配置文件的随机类型进行调用
        def get_ua():
            return getattr(self.ua, self.ua_type)

        request.headers.setdefault('User-Agent', get_ua())

打开settings.py文件开启中间件即可生效.

第十步:捕获ajax请求:安装selenium

Original: https://blog.csdn.net/wenxingchen/article/details/118876695
Author: 苍穹之跃
Title: 快速构建Scrapy项目脚手架

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/789524/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • pytest自动化测试视频+文档分享

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

    Python 2023年9月13日
    058
  • python基础-列表、元组常用方法

    元组是不可变数据类型,可用方法较少,所以可以直接和列表一同对比记忆; 1.len() 方法在列表、元组中的使用 求列表、元组的长度; len() 方法可以统计除了数字外的任意数据类…

    Python 2023年10月31日
    052
  • pythonlibrary安装教程_python library怎么安装

    Python 是一门优雅的语言,简洁的语法,强大的功能。丰富的第三方库,更能加速开发,库 library 是一个泛称,在这里介绍 Python 第三方库的安装方法总结,包括源码安装…

    Python 2023年9月21日
    065
  • Pandas经典用法:数据筛选之iloc和loc

    Pandas 是一套用于 Python 的快速、高效的数据分析工具。它可以用于数据挖掘和数据分析,同时也提供数据清洗功能。本篇目录如下: ; 一、iloc 1.定义 iloc索引器…

    Python 2023年8月6日
    0123
  • 第十三周数据预处理实验

    实验任务 准备工作 学习数据预处理描述性分析的内容 在学习通下载文件”insurance.csv”和”doc_sim.csv” 实验…

    Python 2023年9月4日
    049
  • scrapy常用命令

    startproject 创建名为projectname的项目 scrapy startproject \<projectname> settiongs 输出项目设定值…

    Python 2023年10月1日
    062
  • 【python】都2022年不会还有人不会在电脑桌面上养宠物吧~

    Original: https://www.cnblogs.com/Qqun261823976/p/16860074.htmlAuthor: python倩Title: 【pyth…

    Python 2023年10月30日
    040
  • Pytest.conftest

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

    Python 2023年9月13日
    063
  • 『德不孤』Pytest框架 — 14、Pytest参数化

    软件测试中,输入相应值,检查期望值,是常见测试方法。 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据是无法完全覆盖测试范围的,所以需要参数化来传递多组数据。 Unit…

    Python 2023年9月14日
    048
  • Python 的元类设计起源自哪里?

    一个元老级的 Python 核心开发者曾建议我们( 点击阅读),应该广泛学习其它编程语言的优秀特性,从而提升 Python 在相关领域的能力。在关于元编程方面,他的建议是学习 Hy…

    Python 2023年5月24日
    0111
  • 错误集合_20220131

    此部分内容主要是工作中遇到的一些报错,简单的解决方案会直接贴出来,链接一般为问题解决方案详细解释。 shell脚本写得一切正常,但是一执行就报错:line: XXX “…

    Python 2023年8月10日
    044
  • 【Python游戏】给大家安利一下飞机大战的小游戏 |附带源码

    相关文件 想学Python的小伙伴可以关注小编的 公众号【Python日志】有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!!需要源码的小伙伴可以在公众号回复 …

    Python 2023年9月20日
    053
  • python中的scrapy爬虫_python中用Scrapy实现定时爬虫的实例讲解

    一般网站发布信息会在具体实现范围内发布,我们在进行网络爬虫的过程中,可以通过设置定时爬虫,定时的爬取网站的内容。使用python爬虫框架scrapy框架可以实现定时爬虫,而且可以根…

    Python 2023年10月3日
    053
  • Django实现统一包装接口返回值数据格式

    由于前段时间我写了不少.NetCore的后端代码,对CRUD的接口开发又有了一些新的理解,所以肯定也要把DjangoStarter改造一番,改得更加顺手~ 题外话:话说我在前端终于…

    Python 2023年8月4日
    084
  • 【python-pytest】基础知识(安装,命名,运行,前置/后置方法)

    前言:介绍一下pytest框架的安装方式,命名规则及三种运行方式,常用命令参数,前置、后置方法 目录 一、pytest安装 1.1 命令行方式 1.2 pycharm添加 二、命名…

    Python 2023年9月11日
    061
  • 【Python】关于 Pandas 常用语法合集

    【Python】关于 Pandas 常用语法合集 仅个人常用且常忘记 不断更新中 1、合并/连接 数据框 df1=pd.DataFrame([[1,2,3],[2,3,4]],co…

    Python 2023年8月22日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球