如何提高網(wǎng)站百度權(quán)重如何去除痘痘有效果
設(shè)計(jì)目的
該項(xiàng)目框架Scrapy可以讓我們平時(shí)所學(xué)的技術(shù)整合旨在幫助學(xué)習(xí)者提高Python編程技能并熟悉基本概念:
1. 學(xué)習(xí)基本概念:介紹Python的基本概念,如變量、數(shù)據(jù)類(lèi)型、條件語(yǔ)句、循環(huán)等。
2. 掌握基本編程技巧:教授學(xué)生如何使用Python編寫(xiě)簡(jiǎn)單的程序,如計(jì)算器、字符串處理等。
3. 熟悉Python樣式指南:學(xué)習(xí)Python的官方樣式指南(PEP 8),如編碼風(fēng)格、行長(zhǎng)限制等,以確保代碼的可讀性和可維護(hù)性。
4. 掌握常見(jiàn)數(shù)據(jù)結(jié)構(gòu)和算法:介紹列表、元組、字典、棧、隊(duì)列等常見(jiàn)數(shù)據(jù)結(jié)構(gòu),以及相關(guān)的算法,如排序、搜索等。
5. 學(xué)習(xí)基于對(duì)象的編程:教授學(xué)生如何使用Python的面向?qū)ο缶幊?#xff08;OOP)概念,如類(lèi)、對(duì)象、繼承、多態(tài)等。
6. 掌握網(wǎng)絡(luò)編程:介紹Python網(wǎng)絡(luò)編程中的基本概念和技術(shù),如網(wǎng)絡(luò)請(qǐng)求、網(wǎng)絡(luò)服務(wù)器、套接字等。
7. 學(xué)習(xí)多線(xiàn)程和多進(jìn)程編程:教授學(xué)生如何使用Python的多線(xiàn)程和多進(jìn)程編程技術(shù),以提高程序性能和可擴(kuò)展性。
8. 熟悉Python庫(kù)和模塊:介紹Python的常用庫(kù)和模塊,如from os import remove from time import sleep等,以便學(xué)生在實(shí)際項(xiàng)目中應(yīng)用Python編程技能。
9. 實(shí)踐項(xiàng)目:通過(guò)完成實(shí)踐項(xiàng)目,幫助學(xué)生將所學(xué)知識(shí)應(yīng)用到實(shí)際編程場(chǎng)景,提高實(shí)際編程能力。
代碼審查和優(yōu)化:教授學(xué)生如何對(duì)自己和他人的Python代碼進(jìn)行審查,以提高代碼質(zhì)量和可讀性。
10.通過(guò)這個(gè)課程,學(xué)生將掌握Python編程的基本技能,了解Python的編程風(fēng)格和最佳實(shí)踐,并學(xué)會(huì)應(yīng)用Python編程技能來(lái)解決實(shí)際問(wèn)題
11. Scrapy框架介紹:介紹Scrapy的主要功能和使用場(chǎng)景,以便學(xué)習(xí)者了解如何使用Scrapy進(jìn)行爬取。Scrapy的使用步驟:詳細(xì)介紹如何使用Scrapy編寫(xiě)爬蟲(chóng)腳本,包括定義爬蟲(chóng)項(xiàng)目、設(shè)置爬蟲(chóng)設(shè)置、編寫(xiě)爬蟲(chóng)規(guī)則和處理爬取結(jié)果等。實(shí)際爬取案例:通過(guò)實(shí)際爬取案例,如爬取廣東各城市天氣預(yù)報(bào),幫助學(xué)習(xí)者了解如何使用Scrapy爬取實(shí)際世界中的天氣預(yù)報(bào)數(shù)據(jù)。處理HTML標(biāo)簽和網(wǎng)頁(yè)源代碼:教授學(xué)習(xí)者如何識(shí)別和處理常見(jiàn)HTML標(biāo)簽,以及如何理解網(wǎng)頁(yè)源代碼結(jié)構(gòu)。使用Beautiful Soup庫(kù):介紹Beautiful Soup庫(kù)的功能,并通過(guò)實(shí)際例子教授學(xué)習(xí)者如何使用Beautiful Soup從網(wǎng)頁(yè)中提取數(shù)據(jù)。
設(shè)計(jì)內(nèi)容與要求
1、熟練安裝 Python 擴(kuò)展庫(kù) scrapy。
2、熟悉常見(jiàn) HTML 標(biāo)簽的用法。
3、理解網(wǎng)頁(yè)源代碼結(jié)構(gòu)。
4、理解 scrapy 框架工作原理。實(shí)驗(yàn)內(nèi)容:
5.安 裝 Python 擴(kuò) 展 庫(kù) scrapy , 然 后 編 寫(xiě) 爬 蟲(chóng) 項(xiàng) 目 , 從 網(wǎng) 站 http://www.weather.com.cn/guangdong/index.shtml 爬取廣東各城市的天氣預(yù)報(bào)數(shù)據(jù),并把爬取到的天氣數(shù)據(jù)寫(xiě)入本地文本 weather.txt。
設(shè)計(jì)思路
學(xué)習(xí)使用Scrapy框架爬取天氣預(yù)報(bào),提高Python爬蟲(chóng)技能
在這次課程考核實(shí)驗(yàn)中,我們將使用Python和Scrapy框架編寫(xiě)一個(gè)爬取天氣預(yù)報(bào)的項(xiàng)目。具體實(shí)驗(yàn)步驟如下:
1. 安裝Scrapy:首先,確保已安裝Python擴(kuò)展庫(kù)Scrapy??梢酝ㄟ^(guò)`pip install scrapy`命令安裝。
2. 創(chuàng)建爬蟲(chóng)項(xiàng)目:創(chuàng)建一個(gè)新的Python文件,例如`weather_spider.py`,并在其中定義爬蟲(chóng)類(lèi)。在爬蟲(chóng)類(lèi)中,我們將編寫(xiě)代碼來(lái)爬取天氣預(yù)報(bào)信息。
3. 編寫(xiě)爬蟲(chóng)代碼:在爬蟲(chóng)類(lèi)的`parse`方法中,我們將使用Scrapy的API來(lái)提取網(wǎng)頁(yè)中的天氣信息。具體實(shí)現(xiàn)方法可能因網(wǎng)站的結(jié)構(gòu)和布局而異,但通??梢允褂肵Path或CSS選擇器來(lái)提取所需的元素。
4. 運(yùn)行爬蟲(chóng):在命令行中運(yùn)行爬蟲(chóng)項(xiàng)目,并指定爬取的城市和天氣預(yù)報(bào)的時(shí)間范圍。例如:`scrapy crawl weather_spider -a start_dates=2023-12-15,end_dates=2023-12-24 -s OUTPUT=file:///path/to/output.txt`.
5. 保存爬取結(jié)果:爬蟲(chóng)運(yùn)行完成后,將爬取到的天氣信息保存到指定的文件中,例如`output.txt`。
通過(guò)這個(gè)實(shí)驗(yàn),您將學(xué)習(xí)如何使用Python和Scrapy框架爬取天氣預(yù)報(bào)信息。在實(shí)際應(yīng)用中,您可以根據(jù)需要調(diào)整爬蟲(chóng)代碼以適應(yīng)不同的網(wǎng)站結(jié)構(gòu)和布局。同時(shí),您還可以嘗試使用其他爬蟲(chóng)技術(shù),如 Beautiful Soup 和 Selenium,以進(jìn)一步提高爬取效率和靈活性。以下是設(shè)計(jì)的流程圖
實(shí)現(xiàn)過(guò)程
實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)步驟如下以及詳細(xì)的核心代碼解釋
1.在命令提示符環(huán)境使用 pip install scrapy 命令安裝 Python 擴(kuò)展庫(kù) scrapy
2.在vscode的終端中使用命令提示符 scrapy startproject GuangDongWeather創(chuàng)建爬蟲(chóng)項(xiàng)目文件
3.進(jìn)入爬蟲(chóng)項(xiàng)目文件夾,然后執(zhí)行命令 scrapy genspider GuangDongWeatherSpider?www.weather.com.cn?創(chuàng)建爬蟲(chóng)程序。
4.使用瀏覽器打開(kāi)網(wǎng)址http://www.weather.com.cn/guangdong/index.shtml,
5.找到下面位置?? 廣東天氣預(yù)報(bào) - 廣東
6.在頁(yè)面上單擊鼠標(biāo)右鍵,選擇“查看網(wǎng)頁(yè)源代碼”,然后找到與“城市預(yù)報(bào)列表”? 對(duì)應(yīng)的位置。
7.選擇并打開(kāi)廣東省內(nèi)任意城市的天氣預(yù)報(bào)頁(yè)面,此處以深圳為例
8.在頁(yè)面上單擊鼠標(biāo)右鍵,選擇“查看網(wǎng)頁(yè)源代碼”,找到與上圖中天氣預(yù)報(bào)相對(duì)應(yīng)? 的位置。
9.修改items.py文件,定義要爬取的內(nèi)容如下
import scrapyclass GuangDongWeatherSpiderItem(scrapy.Item):city = scrapy.Field()weather = scrapy.Field()# define the fields for your item here like:# name = scrapy.Field()pass
10.修改爬蟲(chóng)文件 GuangDongWeatherSpider.py,定義如何爬取內(nèi)容,其中用到的規(guī)則參考前面對(duì)頁(yè)面的分析,如果無(wú)法正常運(yùn)行,有可能是網(wǎng)頁(yè)結(jié)構(gòu)有變化,可以回到前面的步驟重新分析網(wǎng)頁(yè)源代碼,代碼如下
import scrapy
from os import remove
from time import sleep
from GuangDongWeather.items import GuangDongWeatherSpiderItemclass EveryCitySpider(scrapy.Spider):name = 'GuangDongWeatherSpider'allowed_domains = ['www.weather.com.cn']# 首頁(yè),爬蟲(chóng)開(kāi)始工作的頁(yè)面start_urls = ['http://www.weather.com.cn/shengzhen/index.shtml']try:remove('lqf.txt')except:passdef parse(self, response):# 獲取每個(gè)地市的鏈接地址,針對(duì)每個(gè)鏈接地址發(fā)起請(qǐng)求urls = response.css('dt>a[title]::attr(href)').getall()for url in urls:yield scrapy.Request(url=url, callback=self.parse_city)sleep(0.3)def parse_city(self, response):'''處理每個(gè)地市天氣預(yù)報(bào)鏈接地址的實(shí)例方法'''# 用來(lái)存儲(chǔ)采集到的信息的對(duì)象item = GuangDongWeatherSpiderItem()# 獲取城市名稱(chēng)city = response.xpath('//div[@class="crumbs fl"]/a[3]/text()')item['city'] = city.get()# 定位包含天氣預(yù)報(bào)信息的ul節(jié)點(diǎn),其中每個(gè)li節(jié)點(diǎn)存放一天的天氣selector = response.xpath('//ul[@class="t clearfix"]')[0]weather = []# 遍歷當(dāng)前ul節(jié)點(diǎn)中的所有l(wèi)i節(jié)點(diǎn),提取每天的天氣信息for li in selector.xpath('./li'):# 提取日期date = li.xpath('./h1/text()').get()# 云的情況cloud = li.xpath('./p[@title]/text()').get()# 晚上不顯示高溫high = li.xpath('./p[@class="tem"]/span/text()').get('none')low = li.xpath('./p[@class="tem"]/i/text()').get()wind = li.xpath('./p[@class="win"]/em/span[1]/@title').get()wind += ','+li.xpath('./p[@class="win"]/i/text()').get()weather.append(f'{date}:{cloud},{high}/{low},{wind}')item['weather'] = '\n'.join(weather)return [item]
11.修改 settings.py 文件,分派任務(wù),指定處理數(shù)據(jù)的程序如下,這里劃線(xiàn)的名稱(chēng)要對(duì)應(yīng)你的文件名,相當(dāng)于再找信道,在GuangDongWeather這個(gè)文件下找pipelines然后再找里面的GuangDongWeathersSpiderPipeline
BOT_NAME = "GuangDongWeather"SPIDER_MODULES = ["GuangDongWeather.spiders"]
NEWSPIDER_MODULE = "GuangDongWeather.spiders"
ITEM_PIPELINES = {
'GuangDongWeather.pipelines.GuangDongWeatherSpiderPipeline':1,
}
12.修改 pipelines.py 文件,把爬取到的數(shù)據(jù)寫(xiě)入文件 lqf.txt代碼如下
from itemadapter import ItemAdapterclass GuangDongWeatherSpiderPipeline(object):def process_item(self, item, spider):with open('lqf.txt', 'a', encoding='utf8') as fp: fp.write(item['city']+'\n') fp.write(item['weather']+'\n\n')return item
13.最后就可以通過(guò)命令去運(yùn)行框架如下,你需要去到對(duì)應(yīng)的目錄下運(yùn)行,不然會(huì)報(bào)錯(cuò)
scrapy crawl GuangDongWeatherSpider
?????? 最后需要注意以下幾點(diǎn),第一需要注意的就是版本的問(wèn)題,第二框架問(wèn)題,第三電腦問(wèn)題,這個(gè)時(shí)候你就要多留意一下報(bào)錯(cuò)的原因,然后代碼都要進(jìn)行分析看看它再說(shuō)的什么,這樣子就可以解決大部分問(wèn)題???????