資料直接在網頁中展示,不是動態載入,也不需要cookie,更沒有什麼反爬(之所以寫這篇文章是因為我對scrapy框架不了解,正在學習中,加深一下印象)
可以看到位址 是有一定規律的
#url可以這樣表示不知道scrapy怎麼用的同學可以看我的另外幾篇文章 scrapy基本命令start_urls = [f'
'for i in range(1,101)]
scrapy框架持久化儲存
scrapy分布式爬蟲
增量式爬蟲
1,settings.py配置檔案需要改一些配置
2,item.py確定需要的資料
import3,進行編寫爬蟲檔案scrapy
class
propertiesitem(scrapy.item):
#define the fields for your item here like:
#name = scrapy.field()
title =scrapy.field()
link =scrapy.field()
address =scrapy.field()
big =scrapy.field()
where =scrapy.field()
how =scrapy.field()
price =scrapy.field()
name = scrapy.field()
import4,編寫管道檔案pipelines.pycopy
import
scrapy
from properties.items import
propertiesitem
class
examplespider(scrapy.spider):
name = '
example
'allowed_domains = ['
example.com']
start_urls = [f'
'for i in range(1,101)]
defparse(self, response):
node_list = response.xpath('
//div[@class="content__list--item--main"]')
item =propertiesitem()
for node in
node_list:
item[
"title
"] = node.xpath("
./p[1]/a/text()
").extract_first().strip()
item[
"link
"] = response.urljoin(node.xpath("
./p[1]/a/@href
").extract_first().strip())
item[
"address
"] = node.xpath("
./p[2]/a[3]/text()
").extract_first().strip()
item[
"big
"] = node.xpath("
./p[2]/text()[5]
").extract_first().strip()
item[
"where
"] = node.xpath("
./p[2]/text()[6]
").extract_first().strip()
item[
"how
"] = node.xpath("
./p[2]/text()[7]
").extract_first().strip()
item[
"price
"] =node.xpath(
'./span[@class="content__list--item-price"]/em/text()
').extract_first().strip() + '
元/月'
#item["name"] ='none'
#yield item
yield
scrapy.request(
url=item["
link"],
callback=self.makes,
meta=,
dont_filter=true
)defmakes(self,response):
item = response.meta['
item']
item[
"name
"] = response.xpath('
//span[@class="contact_name"]/@title
').extract_first()
yield item
import別的檔案就不需要做任何更改了,想要儲存到資料庫 ,csv等地方可以看我的部落格scrapy持久化儲存csvclass
propertiespipeline:
def__init__
(self):
self.fp=none
defopen_spider(self,spider):
print('
*****爬蟲開始*****')
self.fp = open('
貝殼.csv
', '
w', newline='', encoding="
utf8")
self.csv_writer=csv.writer(self.fp)
self.csv_writer.writerow(["標題
", "
鏈結", '
位址', "
大小", "
方向", "居室"
, "**
","姓名"])
defprocess_item(self, item, spider):
self.csv_writer.writerow(
[item[
"title
"], item["
link
"], item["
address"],
item[
"big
"], item["
where
"], item["
how"], item["
price
"],item['
name']]
)return
item
defclose_spider(self,spider):
self.fp.close()
print('
*****爬蟲結束*****
')
python操作csv,excel,word
這就是我爬取好的資料,爬取下來是有很多重複資料的,是因為這個**的原因,他在展示資料的時候就是從乙個大列表裡面抽取資料來展示,你每重新整理一次頁面資料也就不一樣,可以用資料分析相關模組進行去重,後續會在部落格中更新,我目前是儲存在csv中,wps,office自帶去重功能
貝殼找房算數(中等)
描述 輸入格式 一行兩個正整數,分別表示 n和k。保證1 n 1e6,1 k 1e18。輸出格式 乙個整數表示答案。樣例輸入 9 5樣例輸出 思路對於數字積相同的可以只算一次,用map存起來個數,這樣就可以將複雜度壓下來了。include pragma warning disable 4786 de...
貝殼找房 丟失的卡片
有一疊 編號為1 n的卡片。吹落了一張。輸入剩餘n 1張卡編號中0 9出現的次數。次數不大於300 輸出卡片數目n和吹落卡片的編號。如果吹落卡片的解不唯一,從小到大排 輸入樣例 2 12 9 3 3 3 3 2 2 2 輸出樣例 26 12 26 21 晚上又寫了一段 基本思路是 0.check了0...
scrapy無法迴圈抓取
最近在學習scrapy,寫好了大概的樣子,但是卻發現無法迴圈抓取,最後自己想著以前貌似有個例子說過原因。name dmoz allowed domains dmoz.org start urls name dmoz allowed domains 123.info start urls 為了實現yi...