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