程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python爬蟲_Scrapy(一)

編輯:Python

Python爬蟲_Scrapy

    • 一、Scrapy簡述
    • 二、58同城項目案例
    • 三、汽車之家案例
    • 四、scrapy shell

一、Scrapy簡述

是為了爬取網站數據,提取結構性數據而編寫的應用框架,可應用在包括數據挖掘、信息處理或存儲歷史數據等一系列程序中

(一)安裝

pip install scrapy -i https://pypi.douban.com/simple

報錯:

WARNING: You are using pip version 21.3.1; however, version 22.1.2 is available.
You should consider upgrading via the 'D:\PythonCode\venv\Scripts\python.exe -m pip install --upgrade pip' command.

解決辦法:運行python -m pip install --upgrade pip
(二)基本使用

  1. 創建爬蟲項目:scrapy startproject scrapy_baidu_01
    注意:
    (1)必須要進入到安裝有scrapy.exe文件夾中才可運行;
    (2)創建的爬蟲項目名字不允許用數字開頭,也不能包含中文
    (3)務必配置scrapy.exe的環境變量,同時重啟電腦在運行D:\P ythonCode\venv\Scripts
  2. 創建爬蟲文件 在spider文件夾中去創建 D:\PythonCode\venv\Scripts\scrapy_baidu_01\scrapy_baidu_01\spiders>
    創建指令:scrapy genspider 爬蟲文件名字 要爬取的網頁
  3. 運行爬蟲代碼scrapy crawl 爬蟲的名字名字是[name = ‘baidu’]
 import scrapy
class BaiduSpider(scrapy.Spider):
# 爬蟲的名字,使用的值
name = 'baidu'
# 允許訪問的域名
allowed_domains = ['www.baidu.com']
# 起始的url地址 第一次要訪問的域名
# start_urls實在allowed_domains的前面添加一個http://,在後面添加了/
start_urls = ['http://www.baidu.com/']
# 執行了start_urls之後執行的方法,方法中的response是返回的對象,相當於
# response = urllib.request.urlopen()
# response = requests.get()
def parse(self, response):
print('ssssss')

二、58同城項目案例

1. scrapy項目的結構

2. response的屬性和方法
response.text獲取的是響應的字符串
response.body獲取二進制數據
response.xpath可以直接使用xpath方法來解析response中的內容
response.extract() 用於提取seletor對象中的data屬性值
response.extract_first() 提取seletor列表的第一個數據

三、汽車之家案例

import scrapy
class CarSpider(scrapy.Spider):
name = 'car'
allowed_domains = ['car.autohome.com.cn/price/brand-15.html']
start_urls = ['https://car.autohome.com.cn/price/brand-15.html']
def parse(self, response):
name_list = response.xpath('//div[@class="main-title"]/a/text()')
price_list = response.xpath('//div[@class="main-lever"]//span/span/text()')
for i in range(len(name_list)):
name = name_list[i].extract()
price = price_list[i].extract()
price(name,price)

scrapy工作原理【灰常重要!!】

  1. 引擎向spiders請求url;
  2. 引擎將請求得到的url傳遞給調度器
  3. 調度器將url生成的請求對象放入指定的隊列中
  4. 從隊列中出隊一個請求
  5. 引擎將請求交給下載器進行處理
  6. 下載器發送請求獲取互聯網數據
  7. 下載器將數據返回給引擎
  8. 引擎將數據再次交給spiders
  9. spiders通過xpath解析該數據,得到數據或者url
  10. spiders將解析結果交給引擎
  11. 若解析結果是數據,則交給管道處理;若解析結果是url,則交給調度器進入下一次循環。

四、scrapy shell


直接輸入指令:scrapy shell www.baidu.com


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved