Python Scrapy爬虫框架使用示例浅析

作者:q56731523 时间:2023-01-28 16:27:45 

示例

下面是一个简单的Python爬虫Scrapy框架代码示例,该代码可以抓取百度搜索结果页面中指定关键字的链接和标题等信息:

import scrapy
class BaiduSpider(scrapy.Spider):
   name = 'baidu'
   allowed_domains = ['www.baidu.com']
   start_urls = ['http://www.baidu.com/s?wd=python']
   def parse(self, response):
       for link in response.css('h3 a'):
           item = {'title': link.css('::text').get(),
                   'link': link.attrib['href']}
           yield item

具体说明

首先定义了一个名为"BaiduSpider"的Spider类,继承自scrapy.Spider。其中name属性表示该爬虫的名称,allowed_domains属性表示可抓取的域名范围,start_urls属性则列出了需要抓取页面的初始URL地址。

在类中定义了一个名为"parse"的方法,用于处理抓取到的网页内容。在该方法中使用CSS选择器语法来提取页面中我们需要的信息,例如抓取标签下的链接和标题。

在parse方法中构造了一个dict类型的item对象,包含了每个链接对应的标题和URL地址。

最后,使用yield语句将item对象生成并返回,使得Scrapy框架将其转化为CSV、JSON或XML等格式的数据并保存在磁盘上。

该示例只是Scrapy框架代码的冰山一角,实际上Scrapy提供了大量的模块和工具类,例如Item、Pipeline、Downloader等组件,可协助完成页面解析、数据清洗、存储等操作。因此,在使用Scrapy进行爬虫开发时,需要仔细阅读官方文档,熟悉其API接口和机制。

Scrapy框架爬虫使用代理ip

在Scrapy框架中使用 * 进行网络爬取,需要先定义一个Downloader Middleware,用于向请求中添加代理。需要注意的是,代理服务器必须支持HTTP协议,否则无法正常工作。以下是一个基本的Scrapy爬虫 * 使用示例:

在settings.py中添加如下配置项:

DOWNLOADER_MIDDLEWARES = {
   'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
   'my_project.middlewares.ProxyMiddleware': 410,
}

其中’scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware’是Scrapy默认提供的下载器中间件,它可以自动从settings.py文件中获取代理的信息;'my_project.middlewares.ProxyMiddleware’是我们自定义的下载器中间件,用来设置代理。

在项目目录下创建一个新的Python脚本middlewares.py,定义ProxyMiddleware类:

import random
class ProxyMiddleware(object):
   # 代理服务器地址列表
   def __init__(self, proxy_list):
       self.proxies = proxy_list
   @classmethod
   def from_crawler(cls, crawler):
       return cls(
           proxy_list=crawler.settings.getlist('PROXY_LIST')
       )
   # 每次请求执行该方法,随机从代理池中选取一个代理发送请求
   def process_request(self, request, spider):
       proxy = random.choice(self.proxies)
       request.meta['proxy'] = proxy
       print('Use proxy: ', proxy)

其中proxy_list是代理服务器的地址列表,需要在settings.py文件中定义为配置项,如下所示:

PROXY_LIST = [
   'http://123.45.67.89:8080',
   'http://123.45.67.90:8080',
   # ...
]

最后,在爬虫启动前需要指定运行命令时使用的设置文件和代理池地址,例如:

scrapy crawl my_spider -s PROXY_LIST='proxy_list.txt'

其中proxy_list.txt文件包含了代理服务器地址,每一行一个,例如:

http://123.45.67.89:8080
http://123.45.67.90:8080

这样,在进行网络请求时就可以自动使用随机的代理地址发送请求,提高爬虫数据抓取的效率和可靠性。

来源:https://blog.csdn.net/weixin_44617651/article/details/130679456

标签:Python,Scrapy,爬虫
0
投稿

猜你喜欢

  • Python xml、字典、json、类四种数据类型如何实现互相转换

    2023-10-17 17:36:20
  • SQL server使用自定义函数以及游标

    2011-11-03 17:26:27
  • 一次mysql迁移的方案与踩坑实战记录

    2024-01-13 03:34:42
  • python 爬取壁纸网站的示例

    2022-07-10 13:29:54
  • opencv-python 开发环境的安装、配置教程详解

    2022-04-25 22:14:58
  • Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程

    2023-04-03 12:13:33
  • MySQL索引数据结构入门详细教程

    2024-01-25 02:02:42
  • python如何利用paramiko执行服务器命令

    2022-09-29 03:39:34
  • 解决pyinstaller打包发布后的exe文件打开控制台闪退的问题

    2023-04-23 03:05:11
  • 最适合人工智能开发的5种编程语言 附人工智能入门书籍

    2023-06-02 03:15:18
  • Python实现二维有序数组查找的方法

    2021-04-15 21:31:38
  • python使用threading.Condition交替打印两个字符

    2022-04-13 09:01:46
  • Python曲线拟合详解

    2023-12-29 05:54:50
  • Python各种扩展名区别点整理

    2023-10-14 21:23:01
  • Django项目中model的数据处理以及页面交互方法

    2022-12-26 20:12:25
  • JavaScript中String.prototype用法实例

    2024-04-22 22:18:12
  • 对python 多个分隔符split 的实例详解

    2022-12-26 11:24:27
  • PHP实现生成二维码的示例代码

    2023-06-13 09:16:03
  • python深度学习TensorFlow神经网络模型的保存和读取

    2022-03-18 06:49:01
  • JavaScript设置获取和设置属性的方法

    2024-05-22 10:35:34
  • asp之家 网络编程 m.aspxhome.com