当前位置: 首页 > wzjs >正文

深圳软件公司招聘一个网站多个子域名优化

深圳软件公司招聘,一个网站多个子域名优化,在国外建设网站,企业网站优化排名一、Scrapy框架概述 1.1 什么是Scrapy Scrapy是一个基于Twisted的异步网络爬虫框架,具有以下特性: 内置数据提取器(Selector) 完善的中间件扩展体系 自动的请求调度机制 支持多种数据存储方式 1.2 Scrapy vs Requests 特性…

一、Scrapy框架概述

1.1 什么是Scrapy

Scrapy是一个基于Twisted的异步网络爬虫框架,具有以下特性:

  • 内置数据提取器(Selector)

  • 完善的中间件扩展体系

  • 自动的请求调度机制

  • 支持多种数据存储方式

1.2 Scrapy vs Requests

特性ScrapyRequests+BS4
并发能力异步高性能同步单线程
项目结构标准化目录自由脚本结构
扩展性中间件系统需手动实现
适用场景大型爬虫项目小规模数据采集

二、环境搭建

2.1 安装Scrapy

pip install scrapy
# 验证安装
scrapy version  # 应输出版本号如2.11.0

2.2 创建项目

scrapy startproject book_scraper
cd book_scraper
scrapy genspider book_spider books.toscrape.com

生成的项目结构:

book_scraper/
├── scrapy.cfg
└── book_scraper/├── __init__.py├── items.py       # 数据容器定义├── middlewares.py # 中间件配置├── pipelines.py   # 数据管道├── settings.py    # 全局配置└── spiders/       # 爬虫目录└── book_spider.py

三、核心组件详解

3.1 Spider类(爬虫核心)

python

复制

import scrapyclass BookSpider(scrapy.Spider):name = "book_spider"  # 爬虫唯一标识allowed_domains = ["books.toscrape.com"]start_urls = ["http://books.toscrape.com/"]def parse(self, response):# 解析逻辑passimport scrapyclass BookSpider(scrapy.Spider):name = "book_spider"  # 爬虫唯一标识allowed_domains = ["books.toscrape.com"]start_urls = ["http://books.toscrape.com/"]def parse(self, response):# 解析逻辑pass

3.2 Item类(数据结构)

# items.py
import scrapyclass BookItem(scrapy.Item):title = scrapy.Field()price = scrapy.Field()rating = scrapy.Field()stock = scrapy.Field()

3.3 Pipeline(数据处理管道)

# pipelines.py
class BookPipeline:def process_item(self, item, spider):# 数据清洗/存储逻辑if item['price']:item['price'] = float(item['price'].replace('£', ''))return item

3.4 Middleware(中间件系统)

# middlewares.py
class RandomDelayMiddleware:def process_request(self, request, spider):# 设置随机请求延迟(0.5-1.5秒)delay = random.uniform(0.5, 1.5)request.meta['download_timeout'] = delay

四、完整爬虫实战

4.1 编写爬虫逻辑

# spiders/book_spider.py
class BookSpider(scrapy.Spider):name = 'book_spider'def start_requests(self):urls = [f"http://books.toscrape.com/catalogue/page-{i}.html" for i in range(1,51)]for url in urls:yield scrapy.Request(url=url, callback=self.parse)def parse(self, response):books = response.css('article.product_pod')for book in books:item = BookItem()item['title'] = book.css('h3 a::attr(title)').get()item['price'] = book.css('p.price_color::text').get()item['rating'] = book.css('p.star-rating::attr(class)').get().split()[-1]yield item# 自动翻页(已由start_requests实现)

4.2 配置settings.py

# 启用Pipeline
ITEM_PIPELINES = {'book_scraper.pipelines.BookPipeline': 300,
}# 遵守robots协议
ROBOTSTXT_OBEY = True  # 并发控制
CONCURRENT_REQUESTS = 16  
DOWNLOAD_DELAY = 0.5

4.3 运行爬虫

scrapy crawl book_spider -o books.csv
# 支持导出格式:json, csv, xml等

五、高级功能扩展

5.1 动态网页处理(Selenium中间件)

# middlewares.py
from selenium import webdriverclass SeleniumMiddleware:def process_request(self, request, spider):if request.meta.get('selenium'):driver = webdriver.Chrome()driver.get(request.url)html = driver.page_sourcedriver.quit()return HtmlResponse(url=request.url, body=html, encoding='utf-8')

5.2 分布式爬虫(Redis集成)

# settings.py
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
REDIS_URL = 'redis://localhost:6379'

5.3 自动限速算法

# settings.py
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5.0
AUTOTHROTTLE_MAX_DELAY = 60.0

六、调试技巧

6.1 Scrapy Shell

scrapy shell "http://books.toscrape.com"
>>> response.css('title::text').get()
'All products | Books to Scrape - Sandbox'

6.2 日志分级

scrapy crawl book_spider -L INFO  # DEBUG/INFO/WARNING/ERROR

6.3 中间件断点调试

# 在middleware中插入调试代码
import pdb; pdb.set_trace()

七、最佳实践

  1. 遵守robots.txt:设置ROBOTSTXT_OBEY = True

  2. 设置User-Agent:使用随机User-Agent中间件

  3. 异常处理:覆盖spider_error回调

  4. 数据去重:使用scrapy-deltafetch扩展

  5. 监控报警:集成ScrapydWeb可视化面板

八、常见问题解答

Q1:如何处理登录验证?

# 在Spider中实现登录
def start_requests(self):return [scrapy.FormRequest('https://example.com/login',formdata={'user': 'admin', 'pass': 'secret'},callback=self.after_login)]

Q2:如何避免被封IP?

  • 使用代理中间件

  • 设置合理的DOWNLOAD_DELAY

  • 使用scrapy-rotating-proxies扩展

Q3:如何抓取JavaScript渲染的页面?

  • 使用Selenium中间件

  • 集成Splash服务

  • 使用scrapy-playwright


本文技术要点

  1. Scrapy框架的组件化设计

  2. 可扩展的中间件系统

  3. 生产级爬虫的最佳实践

  4. 分布式爬虫架构基础

  5. 常见反爬应对策略

下一步学习建议

  • 研究Scrapy源码理解运行机制

  • 学习Scrapy-Redis实现分布式

  • 实践反反爬技术(验证码识别、指纹伪装)


文章转载自:

http://k6Cxt4pi.dqcmq.cn
http://PJs0Gvo9.dqcmq.cn
http://Xahwznp2.dqcmq.cn
http://mjHFysoz.dqcmq.cn
http://IS5Bzftl.dqcmq.cn
http://u8OLO4Po.dqcmq.cn
http://zaiIprVH.dqcmq.cn
http://ezewkmqO.dqcmq.cn
http://rfm8XafC.dqcmq.cn
http://RJRx5UJN.dqcmq.cn
http://ghQ6ib6D.dqcmq.cn
http://Ep00pMHW.dqcmq.cn
http://AbNu9QBz.dqcmq.cn
http://YSTxXPOT.dqcmq.cn
http://1te0tLwy.dqcmq.cn
http://ebpDwxCu.dqcmq.cn
http://fOmbLFDN.dqcmq.cn
http://s3pwNobD.dqcmq.cn
http://YT6eBtfY.dqcmq.cn
http://TiXxNzF0.dqcmq.cn
http://WY8SzFu9.dqcmq.cn
http://mLgRTUii.dqcmq.cn
http://Fr4PrzlN.dqcmq.cn
http://JtzRrFgB.dqcmq.cn
http://VPpaPKTw.dqcmq.cn
http://WESOPnbA.dqcmq.cn
http://XGlKoSY8.dqcmq.cn
http://SLXTAwDr.dqcmq.cn
http://c8hyA6OE.dqcmq.cn
http://vL7jegel.dqcmq.cn
http://www.dtcms.com/wzjs/632894.html

相关文章:

  • 绵阳网站建设费用长沙手机网站建设公司排名
  • html网站开发需要什么软件厚街做网站
  • 百度收录排名好的网站网上怎么开自己的网店呀
  • 营销型企业网站优化的作用网站添加 百度商桥
  • 一个人做网站哈尔滨制作网站工作室
  • 找网站开发需求客户平台wordpress阅读量造假
  • 企业门户网站是什么意思搜狗推广做网站要钱吗
  • 网站建设与管理案例教程在线阅读北京移动官网网站建设
  • 如何建立一个网站及appwordpress搭建镜像
  • h5网站模板如何建立app
  • 免费设计装修网站网站推广联盟
  • 网站设计中的js是什么合作网站账号登录方式
  • 企业门户网站开发要多少钱全国建设管理信息网站
  • 重庆网站设计开发炫酷网站界面设计
  • 网站建设合同属于印花税的哪个税目专门做外贸网站有哪些
  • 网站关键词代码位置seo优化外包
  • 厦门外贸网站找谁上海网页设计公司哪儿济南兴田德润有活动吗
  • 滁州网站建设费用物流网站建设网
  • 网页设计模板免费下载网站响应式网站适合用什么框架做
  • 网站开发与设计需要哪些技术未来中森网站建设咨询
  • 建站页面整人关不掉的网站怎么做
  • 如何建立自己的商城网站做网站的前途怎么样
  • 番禺网站开发设计欧美网站模板下载
  • 申请做网站东莞建设网站推广公司地址
  • 网站上的缩略图怎么做清晰ih5 做视频网站
  • dede 网站地图 插件wordpress 网易云
  • 网络营销就是建立企业网站wordpress图片二级域名
  • 企业网站不被百度收录贸易网站设计
  • 网站开发线框网站开发是用什么语言
  • 百度seo培训公司东莞seo优化公司