日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫实践 —— 一、入门篇

發布時間:2023/12/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫实践 —— 一、入门篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Scrapy爬蟲實踐 —— 一、入門篇

  • 前言
  • 一、選擇爬蟲框架——Scrapy
  • 二、Scrapy安裝
    • 1.引入庫
    • 2.安裝
    • 3.驗證
  • 三、Scrapy的第一個爬蟲工程
    • 1. 使用框架創建新工程
    • 2. 第一只蟲
    • 3. 開門、放蟲
  • 參考


前言

有朋友最近讓我幫忙做個爬蟲,想想也沒咋做過,順便就來補個課。本文就介紹了一下做爬蟲過程中踩下的坑。


一、選擇爬蟲框架——Scrapy

一直都聽說說Python用來爬蟲是最合適的,所以當然就找了Scrapy來練手。
Scrapy基本大家想要入門都會知道,它是一個爬蟲的應用框架,主要包括爬取網頁、結構化解構。主要用于數據挖掘、信息處理或者歷史歸檔。

二、Scrapy安裝

我的python是在visual studio code中編寫的,安裝的是python3.8的版本,這部分就不贅述了。

1.引入庫

Scrapy由純python寫就,因此它依賴于以下的庫:

  • lxml
  • parsel
  • w3lib
  • twisted
  • cryptography and pyOpenSSL

上述庫均可以直接用pip install安裝

2.安裝

pip install scrapy

3.驗證

打開bash,進入工作區

$ scrapy Scrapy 2.5.0 - no active projectUsage:scrapy <command> [options] [args]Available commands:bench Run quick benchmark testcommandsfetch Fetch a URL using the Scrapy downloadergenspider Generate new spider using pre-defined templatesrunspider Run a self-contained spider (without creating a project)settings Get settings valuesshell Interactive scraping consolestartproject Create new projectversion Print Scrapy versionview Open URL in browser, as seen by Scrapy[ more ] More commands available when run from project directoryUse "scrapy <command> -h" to see more info about a command

大功告成,安裝成功

這一步執行的時候出錯,VS Code的老毛病了,關掉VS Code重啟一下就好了

三、Scrapy的第一個爬蟲工程

1. 使用框架創建新工程

scrapy startproject quote

創建后,可以用tree命令看一下:

E:\PythonWork\Scrapy\quote>tree /f 文件夾 PATH 列表 卷序列號為 78FD-091E E:. │ scrapy.cfg #爬蟲配置文件 │ └─quote #項目python模塊,可以在此引入我們的代碼│ items.py #item定義文件│ middlewares.py #中間件文件,包含IP代理設置等可以在此文件中處理│ pipelines.py #管道處理文件│ settings.py #設定文件│ __init__.py │└─spiders #爬蟲所在文件夾__init__.py

入門的場景下我們基本關注爬蟲所在的文件夾即可

2. 第一只蟲

在Scrapy中,爬蟲是定義爬取行為和頁面的一個類。應該是Spider子類并且定義初始化的請求。例如爬取的鏈接,以及定義如何處理分析爬取的頁面的內容并解析數據。
我們在quote\spiders文件夾下創建quote_spider.py文件,文件內容如下:

# This package will contain the spiders of your Scrapy project # # Please refer to the documentation for information on how to create and manage # your spiders. import scrapy#定義我們的爬蟲類,該類為Spider的子類 class QuotesSpider(scrapy.Spider): #爬蟲名,項目中唯一,后續在命令行啟動調用時使用name = "quotes"#返回一個請求的可迭代對象,爬蟲在爬取前執行該函數def start_requests(self):#定義待爬取的鏈接urls = ['http://quotes.toscrape.com/page/1/','http://quotes.toscrape.com/page/2/',]for url in urls:yield scrapy.Request(url=url, callback=self.parse)#在單個爬取request執行后的處理行為, response中存儲了爬取后的數據def parse(self, response):page = response.url.split("/")[-2]filename = f'quotes-{page}.html'with open(filename, 'wb') as f:f.write(response.body)self.log(f'Saved file {filename}')

parse()方法通常用來處理返回內容,將爬取的數據提取至字典,或尋找下一個要爬取的URL(通過調用Request方法進行下一步的爬取)
注意,如果提示編碼錯誤,把中文注釋刪除即可

3. 開門、放蟲

scrapy crawl quotes

這條命令運行名為quotes的爬蟲,該名字在我們剛才添加的文件中定義了

2021-05-20 16:11:29 [scrapy.utils.log] INFO: Scrapy 2.5.0 started (bot: quote) 2021-05-20 16:11:29 [scrapy.utils.log] INFO: Versions: lxml 4.6.3.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 20.3.0, Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)], pyOpenSSL 20.0.1 (OpenSSL 1.1.1k 25 Mar 2021), cryptography 3.4.7, Platform Windows-7-6.1.7601-SP1 2021-05-20 16:11:29 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor 2021-05-20 16:11:29 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'quote','NEWSPIDER_MODULE': 'quote.spiders','ROBOTSTXT_OBEY': True,'SPIDER_MODULES': ['quote.spiders']} 2021-05-20 16:11:29 [scrapy.extensions.telnet] INFO: Telnet Password: cf9b8b15e70bb2c3 2021-05-20 16:11:29 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats','scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.LogStats'] 2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware','scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware','scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware','scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware','scrapy.downloadermiddlewares.useragent.UserAgentMiddleware','scrapy.downloadermiddlewares.retry.RetryMiddleware','scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware','scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware','scrapy.downloadermiddlewares.redirect.RedirectMiddleware','scrapy.downloadermiddlewares.cookies.CookiesMiddleware','scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware','scrapy.downloadermiddlewares.stats.DownloaderStats'] 2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware','scrapy.spidermiddlewares.offsite.OffsiteMiddleware','scrapy.spidermiddlewares.referer.RefererMiddleware','scrapy.spidermiddlewares.urllength.UrlLengthMiddleware','scrapy.spidermiddlewares.depth.DepthMiddleware'] 2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled item pipelines: [] 2021-05-20 16:11:30 [scrapy.core.engine] INFO: Spider opened 2021-05-20 16:11:30 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2021-05-20 16:11:30 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 2021-05-20 16:11:31 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://quotes.toscrape.com/robots.txt> (referer: None) 2021-05-20 16:11:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/1/> (referer: None) 2021-05-20 16:11:31 [quotes] DEBUG: Saved file quotes-1.html 2021-05-20 16:11:31 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>

看到這樣的結果,我們就能夠認為爬蟲已經正常工作了。
查看我們的目錄下,目錄下生成了quotes-1.html和quotes-2.html

參考

  • https://docs.scrapy.org/en/latest/intro/tutorial.html

總結

以上是生活随笔為你收集整理的python爬虫实践 —— 一、入门篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。