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


猜你喜欢
- package org.load.demo;import java.io.IOException;import java.util.List
- 比如有两个模块,一个aa.py,一个bb.py 代码如下:aa.py:#encoding:utf-8import bba=1bb.py:#e
- 近来,打开微信群发消息,就会秒收到一些活跃分子的回复,有的时候感觉对方回答很在理,但是有的时候发现对方的回答其实是驴唇不对马嘴,仔细深究发现
- 本文实例为大家分享了TP3.2批量上传文件或图片的具体代码,并解决了同名冲突问题,供大家参考,具体内容如下1、html<form ac
- dataclass简介dataclass的定义位于PEP-557,根据定义一个dataclass是指“一个带有默认值的可变的namedtup
- 字符串的表示方式单引号 ' '双引号 " "多引号 """ "&
- 因为我闲来无事,所以准备找一部电影来看看。 然后我找到了种子搜索网站,可是这类网站的弹窗广告太多,搞得我很烦。所以我就想着自己用python
- 背景介绍最近遇到一个需求,大致就是要获取某个小程序上的数据。心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据。在网上
- Mysql慢查询解释MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过
- 首先简单介绍一下什么叫MySQL;数据库简而言之就是存储数据的仓库,为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。是为了实现
- 安装laravel框架命令行cd进入指定目录下,执行composer create-project --prefer-dist larave
- icon可以用多个软件制作,也可以通过一些网站把普通图片转换为.ico文件,但通常存在的问题是图片本该透明的地方经转换后变为了黑色或者白色,
- 1、去官网下载1.1、网址:https://www.jetbrains.com/pycharm/ 点这里进入选择版本页面1.2、如果就是我们
- python实现12306余票查询我们说先在浏览器中打开开发者工具(F12),尝试一次余票的查询,通过开发者工具查看发出请求的包余票查询界面
- 本文实例讲述了Python采用socket模拟TCP通讯的实现方法。分享给大家供大家参考。具体实现方法如下:对于TCP server端的创建
- 需求背景业务表tb_image部分数据如下所示,其中id唯一,image_no不唯一。image_no表示每个文件的编号,每个文件在业务系统
- vue2.0中使用mapState及mapActions的方式 // 使用mapStatecomputed: { &nb
- 首先在文件夹中添加_init_.py文件,即使是空文件也可以,多层文件夹,每层文件夹中都要添加。比如我要import,a文件夹中,b文件夹下
- 下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最基础的内容html_doc = &qu
- 理论介绍分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文