本篇內(nèi)容介紹了“Python Scrapy爬蟲框架如何使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元古浪做網(wǎng)站,已為上家服務(wù),為古浪各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
1、項(xiàng)目創(chuàng)建
創(chuàng)建一個(gè)Scrapy項(xiàng)目非常簡(jiǎn)單,一般快速創(chuàng)建可以通過終端直接輸入如下代碼:
scrapy startproject zhuanti_new
如果要在不同的文件中創(chuàng)建此項(xiàng)目,就需要先找到對(duì)應(yīng)的文件路徑,當(dāng)然你也可以通過pycharm,直接在對(duì)應(yīng)的文件中,點(diǎn)擊左下角終端進(jìn)行創(chuàng)建,項(xiàng)目就直接在對(duì)應(yīng)的項(xiàng)目文件中創(chuàng)建了一個(gè)Scrapy項(xiàng)目
2、Scrapy項(xiàng)目文件介紹
通過下面截圖可以看到一個(gè)Scrapy項(xiàng)目有哪些文件,同時(shí)還需要?jiǎng)?chuàng)建和生成哪些文件,接下來逐一介紹。
(1)最頂層的zhuanti_new文件夾是Scrapy的項(xiàng)目名稱
(2)第2層有4個(gè)文件:
第1個(gè):和項(xiàng)目名稱相同的文件,就是我們通常叫的爬蟲包,所有的爬蟲代碼都在這個(gè)包里面
第2個(gè):mian文件,是用來運(yùn)行這個(gè)項(xiàng)目的主函數(shù)代碼文件,代碼寫完后通過這個(gè)文件總體運(yùn)行
第3個(gè):配置文件,說明一下默認(rèn)設(shè)置文件的位置為zhuanti_new模塊下的settings文件,同時(shí)定義項(xiàng)目名稱為:zhuanti_new
第4個(gè):為存儲(chǔ)爬取結(jié)果的txt文件
針對(duì)第一個(gè)文件里面的代碼重點(diǎn)文件下面逐一介紹一下:
(1)items.py文件:定義爬蟲抓取的字段信息
(2)pipelines.py文件:主要用于數(shù)據(jù)處理、清洗和存儲(chǔ)
(3)settings.py:主要用于設(shè)置請(qǐng)求頭、報(bào)警處理等相關(guān)問題
(4)zhuantispider.py文件:重點(diǎn)爬取數(shù)據(jù)過程的代碼文件,也是新建立的文件
代碼如下:
from zhuanti_new.items import ZhuantiNewItem
import scrapy
from scrapy.selector import Selector
class JianshuSpiderSpider(scrapy.Spider):
name = 'zhuantispider'
allowed_domains = ['jianshu.com']
start_urls = ['https://www.jianshu.com/recommendations/collections?page=1&order_by=hot']
#print(start_urls)
def parse(self, response):
'''解析外面頁(yè)面'''
selector = Selector(response)
partical_urls = selector.re('
', selector)for url in partical_urls:
print(url)
right_url = response.urljoin(url)
#print(right_url)
parts = ['?order_by=added_at&page={0}'.format(k) for k in range(1, 11)]
for part in parts:
# 要爬取每個(gè)專題的前10個(gè)文章的信息
real_url = right_url + part
#print(real_url)
yield scrapy.Request(real_url, callback=self.parse_detail)
links = ['https://www.jianshu.com/recommendations/collections?page={}&order_by=hot'.format(i) for i in
range(2, 3)]
for link in links:
print(link)
request = scrapy.Request(link, callback=self.parse)
yield request
def parse_detail(self, response):
selector = Selector(response)
content = selector.xpath('//div[@class="content"]')
for detail in content:
try:
title = detail.xpath('a[1]/text()').extract_first()
summary = detail.xpath('p/text()').extract_first().strip()
author = detail.xpath('div/a[1]/text()').extract_first()
# comments = detail.xpath('div/a[2]/text()').extract_first()這樣是不行的
comments = detail.xpath('div/a[2]/text()').extract()[1].strip()
likes = detail.xpath('div/span[1]/text()').extract_first().strip()
money = detail.xpath('div/span[2]/text()').extract_first()
item = ZhuantiNewItem()
if money is not None:
item['title'] = title
item['summary'] = summary
item['author'] = author
item['comments'] = comments
item['likes'] = likes
item['money'] = money.strip()
else:
item['title'] = title
item['summary'] = summary
item['author'] = author
item['comments'] = comments
item['likes'] = likes
print(item)
yield item
except:
pass
以上就是最主要的幾個(gè)文件,對(duì)于初學(xué)者只要按照對(duì)應(yīng)要求完成這幾個(gè)文件的代碼填寫就可以爬取到數(shù)據(jù)。
3、案例運(yùn)行及結(jié)果
現(xiàn)在開始運(yùn)行整體代碼,就需要?jiǎng)?chuàng)建上述的main文件了,具體main文件代碼如下:
運(yùn)行的爬蟲文件為:zhuantispider,務(wù)必不要寫成Scrapy項(xiàng)目名稱
爬取運(yùn)行結(jié)果如下:
“Python Scrapy爬蟲框架如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁(yè)標(biāo)題:PythonScrapy爬蟲框架如何使用
URL標(biāo)題:http://weahome.cn/article/iecioh.html