日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python Scrapy爬蟲框架的使用

瀏覽:24日期:2022-06-29 14:28:59

導讀:如何使用scrapy框架實現爬蟲的4步曲?什么是CrawSpider模板?如何設置下載中間件?如何實現Scrapyd遠程部署和監控?想要了解更多,下面讓我們來看一下如何具體實現吧!

Scrapy安裝(mac)

pip install scrapy

注意:不要使用commandlinetools自帶的python進行安裝,不然可能報架構錯誤;用brew下載的python進行安裝。

Scrapy實現爬蟲新建爬蟲

scrapy startproject demoSpider,demoSpider為項目名。

確定目標

編寫items.py,如添加目標字段:person = scrapy.Field()

制作爬蟲

scrapy genspider demo 'baidu.com',創建demo爬蟲文件,指定爬取域。

修改demo.py里的start_urls的地址為自己想爬取的地址如:https://www.cnblogs.com/teark/

隨意修改parse()方法,如保存所爬取的頁面,可以這樣:

def parse(self, response): with open('teark.html', 'w') as f: f.write(response.text)

運行爬蟲,看看效果:scrapy crawl demo

有了保存的頁面后(可注釋掉或刪掉保存頁面的代碼),根據頁面結構提取所需數據,一般用xpath表達式,如:

def parse(self, response): for _ in response.xpath('//div[@class=’teark_article’]'): item = ItcastItem() title = each.xpath('h3/text()').extract() content = each.xpath('p/text()').extract() item[’title’] = title[0] item[’content’] = content[0] yield item

保存數據:scrapy crawl demo -o demo.json(以下格式都行:jsonl,jsonl,csv,xml)

注:該過程在取值中經常需要頁面調試,使用scrapy shell(最好先安裝ipython,有語法提示),調試好了再放到代碼里,如:

scrapy shell 'https://www.cnblogs.com/teark/'response.xpath(’//*[@class='even']’)print site[0].xpath(’./td[2]/text()’).extract()[0]處理內容

pipline常用來存儲內容,pipline.py中必須實現process_item()方法,該方法必須返回Item對象,如:

import jsonclass ItcastJsonPipeline(object): def __init__(self): self.file = open(’demo.json’, ’wb’) def process_item(self, item, spider): content = json.dumps(dict(item), ensure_ascii=False) + 'n' self.file.write(content) return item def close_spider(self, spider): self.file.close()

在settings.py中添加ITEM_PIPELINES配置,如:

ITEM_PIPELINES = { 'demoSpider.pipelines.DemoJsonPipeline':300}

重新啟動爬蟲:scrapy crawl demo,看看當前目錄是否生成demo.json

CrawlSpiders

CrawlSpider是spider的派生類,為了從爬取的網頁中獲取link并繼續爬取。

快速創建 CrawlSpider模板:scrapy genspider -t crawl baidu baidu.com

Rule類制定了爬取規則;LinkExtractors類為了提取鏈接,如:

scrapy shell 'http://teark.com/article.php?&start=0#a'from scrapy.linkextractors import LinkExtractor# 注意轉義字符&page_lx = LinkExtractor(allow=(’comment.php?&start=d+’))page_lx.extract_links(response)

測試完后就知道了allow和rules了,修改spider代碼:

#提取匹配 ’http://teark.com/article.php?&start=d+’的鏈接page_lx = LinkExtractor(allow = (’start=d+’))rules = [ #提取匹配,并使用spider的parse方法進行分析;并跟進鏈接(沒有callback意味著follow默認為True) Rule(page_lx, callback = ’parseContent’, follow = True)]

注:callback 千萬不能寫 ’parse’

Logging

添加日志功能:settings.py中添加如下:

LOG_FILE = 'DemoSpider.log'# 還有CRITICAL, ERROR, WARNING DEBUG等級別LOG_LEVEL = 'INFO'FormRequest

該方法用來發送POST請求,在spider.py中如下:

def start_requests(self): url = ’http://www.renren.com/PLogin.do’ yield scrapy.FormRequest( url = url, formdata = {'email' : 'teark@9133***34.com', 'password' : '**teark**'}, callback = self.parse_page )

模擬登陸:

import scrapyclass LoginSpider(scrapy.Spider): name = ’demo.com’ start_urls = [’http://www.demo.com/users/login.php’] def parse(self, response): return scrapy.FormRequest.from_response( response, formdata={’username’: ’teark’, ’password’: ’***’}, callback=self.after_login ) def after_login(self, response): # 檢查登陸成功還是失敗 if 'authentication failed' in response.body: self.log('Login failed', level=log.ERROR) returnDownloader Middlewares防止爬蟲被反策略

設置隨機User-Agent

禁用Cookies,可以通過COOKIES_ENABLED 控制 CookiesMiddleware 開啟或關閉

設置延遲下載降低頻率

使用谷歌/百度等搜索引擎服務器頁面緩存獲取頁面數據

使用IP地址池——VPN和代理IP

使用cralera(專用于爬蟲的代理組件),配置中間件后請求都是通過crawlera發出的

設置下載中間件——Downloader Middlewares

鍵為中間件類的路徑,值為其中間件的順序(order)

DOWNLOADER_MIDDLEWARES = { ’mySpider.middlewares.MyDownloaderMiddleware’: 543,}

當請求通過下載中間件時,process_request方法被調用;當下載中間件完成請求后傳遞響應給引擎時process_response方法被調用。

在settings.py同級目錄下創建middlewares.py文件,如:

import randomimport base64from settings import USER_AGENTSfrom settings import PROXIESclass RandomUserAgent(object): def process_request(self, request, spider): useragent = random.choice(USER_AGENTS) request.headers.setdefault('User-Agent', useragent)class RandomProxy(object): def process_request(self, request, spider): proxy = random.choice(PROXIES) if proxy[’user_passwd’] is None: request.meta[’proxy’] = 'http://' + proxy[’ip_port’] else: base64_userpasswd = base64.b64encode(proxy[’user_passwd’]) request.headers[’Proxy-Authorization’] = ’Basic ’ + base64_userpasswd request.meta[’proxy’] = 'http://' + proxy[’ip_port’]

與代理服務器連接需要使用base64編碼,如果有需要身份驗證的話還需要加上授權信息,

修改settings.py配置USER_AGENTS和PROXIES

免費代理IP上網搜,或購買可用的私密代理IP

USER_AGENTS = ['Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0', 'Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5' ]PROXIES = [{’ip_port’: ’111.8.60.9:8123’, ’user_passwd’: ’user1:pass1’},{’ip_port’: ’101.71.27.120:80’, ’user_passwd’: ’user2:pass2’},{’ip_port’: ’122.96.59.104:80’, ’user_passwd’: ’user3:pass3’},]# 禁用cookiesCOOKIES_ENABLED = False# 設置下載延遲DOWNLOAD_DELAY = 3# 添加自己編寫的下載中間件DOWNLOADER_MIDDLEWARES = { #’mySpider.middlewares.MyCustomDownloaderMiddleware’: 543, ’mySpider.middlewares.RandomUserAgent’: 1, ’mySpider.middlewares.ProxyMiddleware’: 100}Scrapyd - 爬蟲的遠程部署和監控安裝Scrapyd

sudo pip install scrapydsudo pip install scrapyd-client修改scrapyd的配置文件

啟用scrapyd配置,在deploy后面指定當前項目的Scrapyd配置名,配置Scrapyd服務的ip和port,以及當前項目的項目名,如:

sudo vi /usr/local/lib/python3.8.6/site-packages/scrapyd/default_scrapyd.conf

# scrapy項目的settings文件位置,不用改動[settings]default = Demo.settings# Scrapyd_Tencent是配置名[deploy:Scrapyd_Demo] # 若是本機Scrapyd服務部署,則使用localhost即可否則使用服務主機的ipurl = http://localhost:6800/ # 需要部署和監控的Scrapy項目名project = Demo通過Scrapyd客戶端工具掛載項目

指令:scrapyd-deploy Scrapyd_Demo -p Demo

scrapyd-deploy 是客戶端命令,參數是 Scrapyd配置名,以及 -p 指定項目名

遠程部署和停止爬蟲

部署:curl http://localhost:6800/schedule.json -d project=Demo -d spider=demo

停止:curl http://localhost:6800/cancel.json -d project=Demo -d job=iundsw....

注:爬蟲啟動成功后,會生成job值,停止爬蟲時需要通過job值停止。

以上就是python Scrapy爬蟲框架的使用的詳細內容,更多關于python Scrapy爬蟲框架的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色爱综合网欧美| 日韩成人精品一区| 欧美专区一区| 视频一区二区欧美| 久久久精品国产**网站| 黑丝一区二区三区| 精品一级视频| 久久激情综合网| 日韩精品一区二区三区中文在线 | 精品精品99| 国产精品亚洲产品| 免费观看在线色综合| 久久视频国产| 老色鬼精品视频在线观看播放| 亚洲大全视频| 在线日韩av| 激情六月综合| 亚洲欧美日韩精品一区二区 | 亚洲免费观看高清完整版在线观| 国产一区不卡| 国产一区二区三区久久久久久久久| 日本欧美大码aⅴ在线播放| 免费欧美在线视频| 日本午夜精品| 日韩欧美三区| 国产日韩三级| 国产一区二区三区天码| 久久精品1区| 在线亚洲自拍| 国产精品久久久久av蜜臀| 中文一区一区三区高中清不卡免费| 九九精品调教| 综合激情五月婷婷| 日本a级不卡| 日韩精品永久网址| 亚洲欧美久久精品| 久久精品资源| 美女精品一区| av中文资源在线资源免费观看| 精品日韩视频| 欧美日韩国产综合网| 欧美国产极品| 日韩精品一页| 日韩综合在线| 精精国产xxxx视频在线野外| 999久久久国产精品| 亚洲专区在线| 欧美1区2区3| 狠狠爱www人成狠狠爱综合网| 午夜精品影视国产一区在线麻豆| 精品欠久久久中文字幕加勒比| 一区二区精彩视频| 99精品99| 激情91久久| 国产aⅴ精品一区二区三区久久| 激情欧美一区| 欧美成a人国产精品高清乱码在线观看片在线观看久| 日韩视频免费| 蜜臀91精品国产高清在线观看| 久久久久九九精品影院| 国产日韩三级| 亚州av一区| 深夜福利一区| 亚洲一区久久| 欧美在线网站| 日韩一级精品| 9国产精品视频| 欧美精品一区二区久久| 久久国产中文字幕| 精品深夜福利视频| 国产精品黄色| 国产欧美一区二区三区米奇| 亚洲开心激情| 日韩在线成人| 欧美日韩a区| 精品一区二区三区免费看| 精品一区二区三区中文字幕在线| 老司机免费视频一区二区| 久久99精品久久久久久园产越南| 国产精品115| 精品视频一区二区三区四区五区 | 日韩美女国产精品| 国产精品多人| 日韩不卡一区二区三区| 激情综合亚洲| 九色精品91| а√天堂8资源在线| 日韩激情网站| 三级欧美在线一区| 亚洲欧美日韩精品一区二区 | 国产精品综合| 1024精品久久久久久久久| 日韩av自拍| 精品资源在线| 久久国产福利| 亚洲精品激情| 国产精品4hu.www| 亚洲91视频| 日韩高清电影免费| 国产精品久av福利在线观看| 国产精品亚洲综合色区韩国| 久久国产婷婷国产香蕉| 欧美亚洲综合视频| 欧美色图国产精品| 欧美日韩a区| 国产亚洲一区二区手机在线观看| 韩国女主播一区二区三区| 蜜桃一区二区三区| 国产精品久久777777毛茸茸| 播放一区二区| 亚洲一区二区三区四区电影| 国产乱人伦丫前精品视频| 麻豆mv在线观看| 日韩中文一区二区| 久久久久蜜桃| 视频一区日韩精品| 国产91精品对白在线播放| 一区二区日韩免费看| 欧美好骚综合网| 午夜国产一区二区| 国产一区白浆| 亚洲精品在线国产| 国精品产品一区| 久热re这里精品视频在线6| 国产亚洲电影| 99久久夜色精品国产亚洲1000部| 亚洲欧美日本日韩| 激情综合五月| 亚洲一区二区三区四区电影| 久久的色偷偷| 亚洲精品国产精品粉嫩| 亚洲天堂久久| 美女毛片一区二区三区四区| 麻豆视频观看网址久久| 日本伊人久久| 91精品一区二区三区综合在线爱| 日本vs亚洲vs韩国一区三区二区| 免费成人网www| 中文字幕高清在线播放| 国产精品v亚洲精品v日韩精品| 日韩毛片一区| 亚洲欧美网站在线观看| 亚洲黄页一区| 在线视频亚洲| 久久婷婷激情| 久久久久亚洲| 久久蜜桃资源一区二区老牛| 午夜精品成人av| 久久青青视频| 日韩中文字幕高清在线观看| 亚洲精品在线影院| 四季av一区二区凹凸精品| 日韩电影免费在线观看| 91精品一区二区三区综合| 久久精品影视| 国产综合色产| 热久久免费视频| 91亚洲精品在看在线观看高清| 日韩黄色av| 精品久久久久中文字幕小说| 91日韩欧美| 国产99久久| 婷婷精品在线| 精品国产一区二区三区噜噜噜| 久久精品官网| 国产高清一区二区| 亚洲青青久久| 成人在线超碰| 免费毛片在线不卡| 国产亚洲一卡2卡3卡4卡新区| 日韩成人综合| 蜜臀久久99精品久久久久久9 | 亚洲影视一区二区三区| 日韩有吗在线观看| 国产一区二区三区四区二区| 亚洲欧美激情诱惑| 国产精品国产一区| 日韩精品一级二级| 日韩精品免费一区二区夜夜嗨| 群体交乱之放荡娇妻一区二区| 国产亚洲久久| 亚洲另类av| 国产精品免费看| 久久精品国产www456c0m| 精品久久久久久久| 久久av电影| 日韩激情啪啪| 香蕉久久99| 精品一级视频| 日本不卡视频在线观看| 久久精品亚洲人成影院 | 国产偷自视频区视频一区二区| 精品久久久久中文字幕小说| 日韩视频二区| 不卡一二三区| 亚洲精品精选| 成人av动漫在线观看| 久久久久亚洲精品中文字幕| 久久亚洲美女| 性欧美69xoxoxoxo|