基于scrapy實(shí)現(xiàn)的簡(jiǎn)單蜘蛛采集程序
本文實(shí)例講述了基于scrapy實(shí)現(xiàn)的簡(jiǎn)單蜘蛛采集程序。分享給大家供大家參考。具體如下:
# Standard Python library imports
# 3rd party imports
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
# My imports
from poetry_analysis.items import PoetryAnalysisItem
HTML_FILE_NAME = r'.+\.html'
class PoetryParser(object):
"""
Provides common parsing method for poems formatted this one specific way.
"""
date_pattern = r'(\d{2} \w{3,9} \d{4})'
def parse_poem(self, response):
hxs = HtmlXPathSelector(response)
item = PoetryAnalysisItem()
# All poetry text is in pre tags
text = hxs.select('//pre/text()').extract()
item['text'] = ''.join(text)
item['url'] = response.url
# head/title contains title - a poem by author
title_text = hxs.select('//head/title/text()').extract()[0]
item['title'], item['author'] = title_text.split(' - ')
item['author'] = item['author'].replace('a poem by', '')
for key in ['title', 'author']:
item[key] = item[key].strip()
item['date'] = hxs.select("http://p[@class='small']/text()").re(date_pattern)
return item
class PoetrySpider(CrawlSpider, PoetryParser):
name = 'example.com_poetry'
allowed_domains = ['www.example.com']
root_path = 'someuser/poetry/'
start_urls = ['http://www.example.com/someuser/poetry/recent/',
'http://www.example.com/someuser/poetry/less_recent/']
rules = [Rule(SgmlLinkExtractor(allow=[start_urls[0] + HTML_FILE_NAME]),
callback='parse_poem'),
Rule(SgmlLinkExtractor(allow=[start_urls[1] + HTML_FILE_NAME]),
callback='parse_poem')]
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- 零基礎(chǔ)寫python爬蟲(chóng)之使用Scrapy框架編寫爬蟲(chóng)
- 零基礎(chǔ)寫python爬蟲(chóng)之爬蟲(chóng)框架Scrapy安裝配置
- Python爬蟲(chóng)框架Scrapy安裝使用步驟
- python使用scrapy解析js示例
- Python的Scrapy爬蟲(chóng)框架簡(jiǎn)單學(xué)習(xí)筆記
- 深入剖析Python的爬蟲(chóng)框架Scrapy的結(jié)構(gòu)與運(yùn)作流程
- 實(shí)踐Python的爬蟲(chóng)框架Scrapy來(lái)抓取豆瓣電影TOP250
- Python使用scrapy采集數(shù)據(jù)過(guò)程中放回下載過(guò)大頁(yè)面的方法
- Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法
- 講解Python的Scrapy爬蟲(chóng)框架使用代理進(jìn)行采集的方法
相關(guān)文章
Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01
pycharm使用matplotlib畫(huà)圖問(wèn)題解決方法
Pycharm是一款功能強(qiáng)大的Python集成開(kāi)發(fā)環(huán)境(IDE),它提供了許多有用的工具和功能,可以幫助開(kāi)發(fā)人員更輕松地編寫和調(diào)試Python代碼,其中一個(gè)有用的工具是Pycharm如何畫(huà)圖,本文給大家介紹在pycharm中使用matplotlib畫(huà)圖問(wèn)題,感興趣的朋友一起看看吧2023-11-11
詳解Python實(shí)現(xiàn)字典合并的四種方法
這篇文章主要為大家詳細(xì)介紹了Python的合并字典的四種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
以SortedList為例詳解Python的defaultdict對(duì)象使用自定義類型的方法
這篇文章主要介紹了以SortedList為例詳解Python的defaultdict對(duì)象使用自定義類型的方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
訊飛webapi語(yǔ)音識(shí)別接口調(diào)用示例代碼(python)
這篇文章主要介紹了如何使用Python3調(diào)用訊飛WebAPI語(yǔ)音識(shí)別接口,重點(diǎn)解決了在處理語(yǔ)音識(shí)別結(jié)果時(shí)判斷是否為最后一幀的問(wèn)題,通過(guò)運(yùn)行代碼并總結(jié)經(jīng)驗(yàn),解決了常見(jiàn)的模塊和屬性錯(cuò)誤,需要的朋友可以參考下2025-03-03
python自動(dòng)化運(yùn)維之Telnetlib的具體使用
本文將結(jié)合實(shí)例代碼,介紹python自動(dòng)化運(yùn)維之Telnetlib的具體使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
pandas讀取文件夾下所有excel文件的實(shí)現(xiàn)
最近需要做一個(gè)需求,要求匯總一個(gè)文件夾所有的excel文件,所以本文就來(lái)介紹一下pandas讀取文件夾下所有excel文件的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

