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

网站设置搜索关键字有哪些做婚礼平面设计的网站

网站设置搜索关键字,有哪些做婚礼平面设计的网站,做网站app需要多少钱,深圳品牌型网站建设"Scrapy到底该怎么学?"今天,我将用这篇万字长文,带你从零开始掌握Scrapy框架的核心用法,并分享我在实际项目中的实战经验!建议收藏⭐! 一、Scrapy简介:为什么选择它? 1.…

"Scrapy到底该怎么学?"今天,我将用这篇万字长文,带你从零开始掌握Scrapy框架的核心用法,并分享我在实际项目中的实战经验!建议收藏⭐!

一、Scrapy简介:为什么选择它?

1.1 Scrapy vs Requests+BeautifulSoup

很多新手会问:“我已经会用Requests+BeautifulSoup了,为什么还要学Scrapy?”

对比项Requests+BS4Scrapy
性能同步请求,速度慢异步IO,高性能
扩展性需要手动实现内置中间件、管道系统
功能完整性仅基础爬取自带去重、队列管理、异常处理
适用场景小规模数据采集企业级爬虫项目

👉 结论:如果是小型项目,Requests够用;但如果是商业级爬虫,Scrapy是更好的选择!

1.2 Scrapy核心架构

(图解Scrapy架构,建议配合流程图理解)

生成Request
发送请求
排队
返回Response
生成Item
Spider
Engine
Scheduler
Downloader
Item Pipeline

二、手把手实战:开发你的第一个Scrapy爬虫

2.1 环境准备

# 推荐使用虚拟环境
python -m venv scrapy_env
source scrapy_env/bin/activate  # Linux/Mac
scrapy_env\Scripts\activate  # Windowspip install scrapy

2.2 创建项目

scrapy startproject book_crawler
cd book_crawler
scrapy genspider books books.toscrape.com

2.3 编写爬虫代码

# spiders/books.py
import scrapyclass BooksSpider(scrapy.Spider):name = "books"def start_requests(self):urls = ['http://books.toscrape.com/']for url in urls:yield scrapy.Request(url=url, callback=self.parse)def parse(self, response):# 提取书籍信息for book in response.css('article.product_pod'):yield {'title': book.css('h3 a::attr(title)').get(),'price': book.css('p.price_color::text').get(),'rating': book.css('p.star-rating::attr(class)').get().split()[-1]}# 翻页逻辑next_page = response.css('li.next a::attr(href)').get()if next_page:yield response.follow(next_page, callback=self.parse)

2.4 运行爬虫

scrapy crawl books -o books.csv

三、Scrapy高级技巧(企业级应用)

3.1 突破反爬:随机UserAgent+代理IP

# middlewares.py
from fake_useragent import UserAgent
import randomclass RandomUserAgentMiddleware:def process_request(self, request, spider):request.headers['User-Agent'] = UserAgent().randomclass ProxyMiddleware:PROXY_LIST = ['http://proxy1.example.com:8080','http://proxy2.example.com:8080']def process_request(self, request, spider):proxy = random.choice(self.PROXY_LIST)request.meta['proxy'] = proxy

settings.py中启用:

DOWNLOADER_MIDDLEWARES = {'book_crawler.middlewares.RandomUserAgentMiddleware': 543,'book_crawler.middlewares.ProxyMiddleware': 544,
}

3.2 数据存储:MySQL+Pipeline

# pipelines.py
import pymysqlclass MySQLPipeline:def __init__(self):self.conn = pymysql.connect(host='localhost',user='root',password='123456',db='scrapy_data',charset='utf8mb4')self.cursor = self.conn.cursor()def process_item(self, item, spider):sql = """INSERT INTO books(title, price, rating) VALUES (%s, %s, %s)"""self.cursor.execute(sql, (item['title'],item['price'],item['rating']))self.conn.commit()return itemdef close_spider(self, spider):self.conn.close()

四、常见问题Q&A

Q1:如何爬取JavaScript渲染的页面?

方案一:Scrapy+Splash

# 安装:docker run -p 8050:8050 scrapinghub/splash
yield scrapy.Request(url,self.parse,meta={'splash': {'args': {'wait': 2.5}}}
)

方案二:Scrapy+Playwright(推荐)

# settings.py
DOWNLOAD_HANDLERS = {"http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler","https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
}

Q2:如何实现分布式爬虫?

使用scrapy-redis

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

五、性能优化技巧

  1. 并发控制

    # settings.py
    CONCURRENT_REQUESTS = 32  # 默认16
    DOWNLOAD_DELAY = 0.25  # 防止被封
    
  2. 缓存请求

    HTTPCACHE_ENABLED = True
    HTTPCACHE_EXPIRATION_SECS = 86400  # 缓存1天
    
  3. 自动限速

    AUTOTHROTTLE_ENABLED = True
    AUTOTHROTTLE_START_DELAY = 5.0
    
http://www.dtcms.com/wzjs/562320.html

相关文章:

  • 网站建设都需要哪些材料现在学ui设计就业前景
  • 周年庆网站要怎么做一流的邯郸网站建设
  • 南京网站设计我选柚米科技长沙模板网站长沙网站建设
  • 哪个网站ppt模板免费下载做恒生指数看什么网站
  • 深圳网站建设公司设计公司网站建设注意的问题
  • 南宁网站设计公司排名买网站域名
  • 网站建设捌金手指花总十三北京制作app
  • 拔别人的网站做网站合法吗网页设计用什么尺寸的画布好
  • google企业网站seo福建省建设行业信息公开平台
  • wordpress 移动 主题做seo推广一年大概的费用
  • 郑州网站建设企业推荐自建网站视频教程
  • 1688外贸网站天津seo优化
  • 备案价格网站医院网站建设方案ppt
  • 网站开发技术留言公众号运营外包价格
  • 淘宝网请人做淘宝客网站网站建设 摄影服务
  • 石景山网站制作案例最好的建站公司
  • wordpress建站全过程免费咨询医生回答
  • 网站开发与实训报告怎么建设游网站主页
  • 程序员自己建站赚钱wordpress查看版本号
  • 2018什么做网站上海企业名称
  • 东莞网站建设排名公司建立互联网公司网站
  • 德州哪里做网站高级前端开发在线培训
  • 网站建设制作合同二次开发平台
  • 可信赖的武进网站建设做销售的 都有什么网站
  • 如何在阿里云云服务器上搭建网站提高网站规范化建设
  • 网站备案需要收费么WordPress域名管理插件
  • 视频网站管理系统工商营业执照在线查询
  • wap网站浏览器贵州百度推广优化报告
  • 静态网站如何建设心悦做宠物的网站
  • dedecms中英文网站网站开发背景知识论文